# 在 Linux 上的信息搜集

在 Linux 上的信息搜集，这里有两层含义，一是指在Linux域主机上对所在域进行侦查，另一层是指使用 Kali Linux 或其他 Linux 攻击主机对目标域进行侦查。

### **第二个 Beacon**

目前，我们只有一个来自 Web02 的 Beacon，以及 Web01 的 root 权限 Shell，还没有其他 PROD 域中用户的明文凭证。回想 chatjs 应用中出现的用户，我们发现他们都是域用户。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/J4xn7jtCRvroVT5p-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/J4xn7jtCRvroVT5p-image.png)

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/Z3AaydY9ZaFYGiYt-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/Z3AaydY9ZaFYGiYt-image.png)

那么就可能存在密码重用，尤其是我们已经破解出 Alice 的密码为 elizabeth (无法还原出其他用户的密码)。再加上默认情况下，所有域用户都可以访问 SSH，那么我们不妨尝试使用 **alice:elizabeth** 登陆 Web01 的 SSH 服务。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/KVq3dJV5ZUFUlRGk-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/KVq3dJV5ZUFUlRGk-image.png)

我们成功登陆了 Web01。并且，我们通过 Chatjs 的利用获得了 root 权限，我们可以灵活地在 alice 与 root 用户之间切换。

查看 Alice 的描述，我们发现她可能具有对 File01 RDP 的访问。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/VJR6QjN2UKcexsV7-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/VJR6QjN2UKcexsV7-image.png)

我们知道 file01 有个公开可读可写的 SMB 目录 **Tools**，我们猜测其绝对路径为 **C:\\Tools** (使用 **UNC 路径**执行程序可能会被阻止)。上传一个 Beacon，然后使用 **SharpRDP** ([https://github.com/0xthirteen/SharpRDP](https://github.com/0xthirteen/SharpRDP)) 在不开启 GUI 的情况下通过 **RDP** 协议远程执行该 Beacon。

```powershell
sharprdp.exe computername=[FQDN] command="[程序绝对路径]" username=[域NetBIOS\用户名] password=[密码]
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-12/scaled-1680-/vvxVaOPfs3a2l3tL-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-12/vvxVaOPfs3a2l3tL-image.png)

幸运的是，我们猜对了绝对路径，并且获得了新的 Beacon，来自 File01，当前用户为 **PROD\\Alice**。这样，我们有了在 PROD 域的第一个 Beacon。

<div class="ZyvIDe" id="bkmrk--4" jsname="kDm4dd"><div class="ZyvIDe" jsname="kDm4dd"><div class="a8FIud X0rvP L6rCcb" data-apply-responsive-style="true" data-classes="" data-initial-translation-length="1318" data-saved-translation-limit-reached="false" jsaction="click:hcujVc,xAFyGb;JIbuQc:VIRg6(NakZHc),OXRwre(UsVyAb);QZDRD:aGeOie;DUcLEe:qaj0Me;" jscontroller="JVNQkc" jsname="DgLQX"><div data-anchor-corner="bottom-end" data-append-to-body="false" data-enable-skip-handler="false" data-popup-corner="top-end" data-propagate-tooltip-mouseover-events="true" data-show-delay-ms="250" jsaction="mouseover: kptBG(Fs81Kd); mouseout: o9UdU(Fs81Kd),o9UdU(V6DMGe);" jscontroller="HwavCb" jsshadow=""><div jsname="Fs81Kd"><div class="VfPpkd-Bz112c-RLmnJb">  
</div><div class="VfPpkd-Bz112c-RLmnJb">  
</div></div></div></div></div></div>### **Linux域主机**

<div class="ZyvIDe" id="bkmrk-%E5%9C%A8linux%E5%9F%9F%E4%B8%BB%E6%9C%BA%E4%B8%8A" jsname="kDm4dd"><div class="a8FIud X0rvP L6rCcb" data-apply-responsive-style="true" data-classes="" data-initial-translation-length="1318" data-saved-translation-limit-reached="false" jsaction="click:hcujVc,xAFyGb;JIbuQc:VIRg6(NakZHc),OXRwre(UsVyAb);QZDRD:aGeOie;DUcLEe:qaj0Me;" jscontroller="JVNQkc" jsname="DgLQX"><div data-anchor-corner="bottom-end" data-append-to-body="false" data-enable-skip-handler="false" data-popup-corner="top-end" data-propagate-tooltip-mouseover-events="true" data-show-delay-ms="250" jsaction="mouseover: kptBG(Fs81Kd); mouseout: o9UdU(Fs81Kd),o9UdU(V6DMGe);" jscontroller="HwavCb" jsshadow=""><div jsname="Fs81Kd"><div class="VfPpkd-Bz112c-RLmnJb">  
</div></div></div></div></div><div aria-live="polite" class="dePhmb" id="bkmrk-%E6%9C%89%E6%97%B6%EF%BC%8C%E9%9D%A2%E5%90%91%E5%85%AC%E4%BC%97%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%98%AF-linux-%E6%93%8D" jsaction="copy:zVnXqd,r8sht;" jsname="r5xl4"><div class="eyKpYb" data-language="zh-CN" data-original-language="en" data-result-index="0" jsaction="rcuQ6b:uniPq;agoMJf:uniPq;PAwimb:fO5Jj;YMDPBc:IPcVpf;zimBkd:psubsc,xEIEwf,vvaHqf,Mw7EEb,bfSYBe,xdbiQe,Omr8vc,aVxZJe;cJuFmb:inBH1e;ZpeCNe:B59DSc;bA9BVe:NTHvjd,G7JiR;d3Xgce:uniPq;yZ6OX:TWxCtb;EKmdBc:g1rTCe; dblclick:wgdrZd" jscontroller="UmyLh" jsdata="Rd7LAc;_;$90" jsmodel="d6pv6c"><div class="J0lOec"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">有时，面向公众的服务器是 Linux 操作系统，例如 Web 服务器。在利用 Web 应用的漏洞后，我们成功地以普通用户或 root 的身份访问该 Linux 服务器。如果作为普通用户身份，甚至不是域用户，而是 **www-data** 等服务账户，这时候我们既不知道任意域用户的明文凭证，也无法访问所有文件，因此我们最好的策略是想办法提升到 root 权限，但不排除服务器有一些文件权限的不当配置，使得普通用户也能读取甚至更改一些敏感文件。如果作为root用户，我们可以访问所有的文件了，但依旧没有任何用户的明文密码。在之前的章节里说了，我们需要关注用户的 **ccache** 文件，位于**/tmp** 目录下，以及用户与主机的 **keytab** 文件。域主机的keytab文件固定位于**/etc/krb5.keytab**，而用户的 keytab 文件不固定，取决于用户习惯。</span></span></span></div></div></div><div class="J0lOec" id="bkmrk--5"></div><div class="J0lOec" id="bkmrk--6"></div><div aria-live="polite" class="dePhmb" id="bkmrk-%E9%80%9A%E5%B8%B8%E6%9D%A5%E8%AE%B2%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E5%8F%91%E7%8E%B0%E7%9A%84%E8%BF%99%E4%BA%9B%E5%87%AD%E8%AF%81%E6%96%87%E4%BB%B6%E8%BD%AC" jsaction="copy:zVnXqd,r8sht;" jsname="r5xl4"><div class="J0lOec">  
</div><div class="eyKpYb" data-language="zh-CN" data-original-language="en" data-result-index="0" jsaction="rcuQ6b:uniPq;agoMJf:uniPq;PAwimb:fO5Jj;YMDPBc:IPcVpf;zimBkd:psubsc,xEIEwf,vvaHqf,Mw7EEb,bfSYBe,xdbiQe,Omr8vc,aVxZJe;cJuFmb:inBH1e;ZpeCNe:B59DSc;bA9BVe:NTHvjd,G7JiR;d3Xgce:uniPq;yZ6OX:TWxCtb;EKmdBc:g1rTCe; dblclick:wgdrZd" jscontroller="UmyLh" jsdata="Rd7LAc;_;$90" jsmodel="d6pv6c"><div class="J0lOec">通常来讲，我们可以通过 SOCKS 代理在攻击主机上远程枚举域信息，但有的加入域的主机会自带一些工具，例如 ldapsearch、pbis-open ([https://github.com/BeyondTrust/pbis-open](https://github.com/BeyondTrust/pbis-open))，以及 rpcclient 等。</div></div></div><div class="J0lOec" id="bkmrk--7"></div>#### **RPCClient**

<div class="J0lOec" id="bkmrk-%E5%9C%A8-web01-%E4%B8%8A%E5%B9%B6%E6%B2%A1%E6%9C%89%E5%86%85%E7%BD%AE-rpccl">在 Web01 上并没有内置 RPCClient，不过很多时候该应用是内置的，那我们透过 SOCKS 来枚举。使用 rpcclient，我们需要指定明文帐号密码，尽管有的时候空会话是允许的。</div><div class="J0lOec" id="bkmrk--8"></div>```shell
rpcclient -U <域 FQDN>/<账户>%<密码> <DC>
```

##### **用户**

我们通过 enumdomusers 命令来查看所有用户

```shell
root@ts:~# proxychains rpcclient -U prod.raven-med.local/alice%elizabeth 172.16.1.11
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:445-<><>-OK
rpcclient $> enumdomusers
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[sql_service] rid:[0x641]
user:[app_security] rid:[0x642]
user:[network_security] rid:[0x643]
user:[alice] rid:[0x645]
user:[harold] rid:[0x646]
user:[backup_operator] rid:[0x647]
user:[john] rid:[0x648]
user:[newman] rid:[0x64b]
user:[jim] rid:[0x64c]
user:[carl] rid:[0x64d]
user:[fusco] rid:[0x64e]

```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/PqaF79hfnDfFultx-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/PqaF79hfnDfFultx-image.png)

通过命令 **query &lt;RID&gt;** 来查看用户详情

```shell
rpcclient $> queryuser 0x641
        User Name   :   sql_service
        Full Name   :
        Home Drive  :
        Dir Drive   :
        Profile Path:
        Logon Script:
        Description :
        Workstations:
        Comment     :
        Remote Dial :
        Logon Time               :      Tue, 28 Mar 2023 03:04:56 UTC
        Logoff Time              :      Thu, 01 Jan 1970 00:00:00 UTC
        Kickoff Time             :      Thu, 01 Jan 1970 00:00:00 UTC
        Password last set Time   :      Sat, 28 Jan 2023 19:35:18 UTC
        Password can change Time :      Sun, 29 Jan 2023 19:35:18 UTC
        Password must change Time:      Thu, 14 Sep 30828 02:48:05 UTC
        unknown_2[0..31]...
        user_rid :      0x641
        group_rid:      0x201
        acb_info :      0x00000210
        fields_present: 0x00ffffff
        logon_divs:     168
        bad_password_count:     0x00000000
        logon_count:    0x0000000a
        padding1[0..7]...
        logon_hrs[0..21]...

```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/qyyWNnFA3kgqoaGZ-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/qyyWNnFA3kgqoaGZ-image.png)

##### **群组**

<div class="J0lOec" id="bkmrk-%E5%AF%B9%E4%BA%8E%E7%BE%A4%E7%BB%84%EF%BC%8C%E4%B9%9F%E6%98%AF%E7%B1%BB%E4%BC%BC%E7%9A%84%EF%BC%8C%E9%80%9A%E8%BF%87-enumdo">对于群组，也是类似的，通过 enumdomgroups 命令枚举群组</div>[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/NVNCioMnUajM8SCp-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/NVNCioMnUajM8SCp-image.png)

<div class="J0lOec" id="bkmrk-%E5%AF%B9%E4%BA%8E%E6%9B%B4%E5%A4%9A%E5%91%BD%E4%BB%A4%EF%BC%8C%E6%9F%A5%E7%9C%8B-help-%E8%8F%9C%E5%8D%95%E5%8D%B3%E5%8F%AF%E3%80%82">对于更多命令，查看 help 菜单即可。</div>[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/mce3hUCeQfej5T4y-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/mce3hUCeQfej5T4y-image.png)

#### **LDAPSearch**

<div class="J0lOec" id="bkmrk-ldapsearch-%E4%B9%9F%E6%98%AF%E8%87%AA%E5%B8%A6%E7%9A%84-lda">ldapsearch 也是自带的 LDAP 交互工具之一，并且 Web01 上就有安装。我们同样需要指定明文帐号密码，除非空会话被允许。</div><div class="J0lOec" id="bkmrk--13"></div>```shell
ldapsearch -h <DC IP> -p 389 -x -b "<站点>" -D '<域\用户>' -w '<密码>'
```

##### **用户**

我们指定了 **objectclass** 为 **user**，并且提取 **samaccountname** 属性：

```shell
web01@web01:~$ ldapsearch -h 172.16.1.11 -p 389 -x -b "dc=prod,dc=raven-med,dc=local" -D 'prod\alice' -w 'elizabeth' '(objectclass=user)' samaccountname
# extended LDIF
#
# LDAPv3
# base <dc=prod,dc=raven-med,dc=local> with scope subtree
# filter: (objectclass=user)
# requesting: samaccountname 
#

# Administrator, Users, prod.raven-med.local
dn: CN=Administrator,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: Administrator

# Guest, Users, prod.raven-med.local
dn: CN=Guest,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: Guest

# DC01, Domain Controllers, prod.raven-med.local
dn: CN=DC01,OU=Domain Controllers,DC=prod,DC=raven-med,DC=local
sAMAccountName: DC01$

# krbtgt, Users, prod.raven-med.local
dn: CN=krbtgt,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: krbtgt

# RAVEN-MED$, Users, prod.raven-med.local
dn: CN=RAVEN-MED$,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: RAVEN-MED$

# FILE01, File Server, Assets, prod.raven-med.local
dn: CN=FILE01,OU=File Server,OU=Assets,DC=prod,DC=raven-med,DC=local
sAMAccountName: FILE01$

# SRV01, SQL Server, Assets, prod.raven-med.local
dn: CN=SRV01,OU=SQL Server,OU=Assets,DC=prod,DC=raven-med,DC=local
sAMAccountName: SRV01$

# WEB01, Web Server, Assets, prod.raven-med.local
dn: CN=WEB01,OU=Web Server,OU=Assets,DC=prod,DC=raven-med,DC=local
sAMAccountName: WEB01$

# sql_service, Users, prod.raven-med.local
dn: CN=sql_service,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: sql_service

# app_security, Users, prod.raven-med.local
dn: CN=app_security,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: app_security

# network_security, Users, prod.raven-med.local
dn: CN=network_security,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: network_security

# alice, Users, prod.raven-med.local
dn: CN=alice,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: alice

# harold, Users, prod.raven-med.local
dn: CN=harold,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: harold

# backup_operator, Users, prod.raven-med.local
dn: CN=backup_operator,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: backup_operator

# john, Users, prod.raven-med.local
dn: CN=john,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: john

# newman, Users, prod.raven-med.local
dn: CN=newman,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: newman

# jim, Users, prod.raven-med.local
dn: CN=jim,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: jim

# carl, Users, prod.raven-med.local
dn: CN=carl,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: carl

# fusco, Users, prod.raven-med.local
dn: CN=fusco,CN=Users,DC=prod,DC=raven-med,DC=local
sAMAccountName: fusco

# search reference
ref: ldap://DomainDnsZones.prod.raven-med.local/DC=DomainDnsZones,DC=prod,DC=r
 aven-med,DC=local

# search result
search: 2
result: 0 Success

# numResponses: 21
# numEntries: 19
# numReferences: 1
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/kn4zlwPV2VEm9boQ-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/kn4zlwPV2VEm9boQ-image.png)

##### **主机**

我们指定了 **objectclass** 为 **computer**，并且提取 **dnshostname** 属性：

```shell
web01@web01:~$ ldapsearch -h 172.16.1.11 -p 389 -x -b "dc=prod,dc=raven-med,dc=local" -D 'prod\alice' -w 'elizabeth' '(objectclass=computer)' dnshostname
# extended LDIF
#
# LDAPv3
# base <dc=prod,dc=raven-med,dc=local> with scope subtree
# filter: (objectclass=computer)
# requesting: dnshostname 
#

# DC01, Domain Controllers, prod.raven-med.local
dn: CN=DC01,OU=Domain Controllers,DC=prod,DC=raven-med,DC=local
dNSHostName: dc01.prod.raven-med.local

# FILE01, File Server, Assets, prod.raven-med.local
dn: CN=FILE01,OU=File Server,OU=Assets,DC=prod,DC=raven-med,DC=local
dNSHostName: file01.prod.raven-med.local

# SRV01, SQL Server, Assets, prod.raven-med.local
dn: CN=SRV01,OU=SQL Server,OU=Assets,DC=prod,DC=raven-med,DC=local
dNSHostName: srv01.prod.raven-med.local

# WEB01, Web Server, Assets, prod.raven-med.local
dn: CN=WEB01,OU=Web Server,OU=Assets,DC=prod,DC=raven-med,DC=local
dNSHostName: web01.prod.raven-med.local

# search reference
ref: ldap://DomainDnsZones.prod.raven-med.local/DC=DomainDnsZones,DC=prod,DC=r
 aven-med,DC=local

# search result
search: 2
result: 0 Success

# numResponses: 6
# numEntries: 4
# numReferences: 1
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/iwEYst4pln6FLapW-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/iwEYst4pln6FLapW-image.png)

<div class="J0lOec" id="bkmrk--16"></div><div aria-live="polite" class="dePhmb" id="bkmrk-linux%E6%94%BB%E5%87%BB%E4%B8%BB%E6%9C%BA" jsaction="copy:zVnXqd,r8sht;" jsname="r5xl4"><div class="J0lOec">  
</div><div class="J0lOec">**Linux 攻击主机**</div></div><div class="J0lOec" id="bkmrk--17"></div><div class="J0lOec" id="bkmrk-%E6%8E%A5%E4%B8%8B%E6%9D%A5%EF%BC%8C%E6%88%91%E4%BB%AC%E8%AE%A8%E8%AE%BA%E5%9C%A8-linux-%E6%94%BB%E5%87%BB%E4%B8%BB%E6%9C%BA"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">接下来，我们讨论在 Linux 攻击主机上通过隧道或者代理对目标进行枚举，对于认证，往往也更加灵活，我们可以使用明文凭证之外的认证方式，例如票据、keytab、哈希等。</span></span></span></div><div class="J0lOec" id="bkmrk--18"></div><div class="J0lOec" id="bkmrk-%E6%88%91%E4%BB%AC%E4%B9%8B%E5%89%8D%E5%8F%91%E7%8E%B0%E4%BA%86-john-%E7%9A%84-home-"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">我们之前发现了 john 的 home 目录下存放着 keytab，我们可以使用 **KeyTabExtract** [(https://github.com/sosdave/KeyTabExtract](https://github.com/sosdave/KeyTabExtract)) 脚本从 keytab 文件中提取出 NTLM 哈希或者 AES 密钥值，而该 keytab 有着 **john** 的 **NTLM** 哈希。</span></span></span></div>[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/SUg6krSvmiEhrcJp-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/SUg6krSvmiEhrcJp-image.png)

以及 **/etc** 目录下 **Web01$** 的哈希

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/tFkdfQ4OIDUSKXDy-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/tFkdfQ4OIDUSKXDy-image.png)

在 /tmp 目录下，还有着 Alice (该小节刚开始的时候登录的) 与 Administrator 的 ccache。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/mhCgpKOb4ksTZThL-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/mhCgpKOb4ksTZThL-image.png)

<div class="J0lOec" id="bkmrk--22"></div><div class="J0lOec" id="bkmrk-%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%8A%8A%E5%9C%A8linux%E5%9F%9F%E4%B8%BB%E6%9C%BA%E4%B8%8A%E6%90%9C%E9%9B%86%E5%88%B0%E7%9A%84-">  
</div>#### **<span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">BloodHound Python </span></span></span>**

<div class="J0lOec" id="bkmrk--23"></div><div class="J0lOec" id="bkmrk--24"></div><div class="J0lOec" id="bkmrk-python-%E7%89%88-bloodhound-"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">Python 版 BloodHound 可以在 Linux 主机上运行，需要 impacket 的依赖。我们可以通过 **pip3 install bloodhound** 安装，之后运行 **bloodhound-python** 运行。我们这里使用的是 Alice 的明文帐号密码认证的，我们也可以提供 **john** 或者 **Web01$** 的 NTLM 哈希甚至 ccache (原理在后续章节深入)。</span></span></span></div><div class="J0lOec" id="bkmrk--25"></div>```
proxychains bloodhound-python -c All -u 'alice@prod.raven-med.local' -p elizabeth  -d prod.raven-med.local -ns 172.16.1.11 --dns-tcp --dns-timeout 10
```

<div class="J0lOec" id="bkmrk--ns-%E9%80%89%E9%A1%B9%E6%8C%87%E5%AE%9A%E4%BA%86-dc01-%E4%B8%BA-dns"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">**-ns** 选项指定了 **DC01** 为 **DNS 服务器**，**--dns-tcp** 强制使用 **DNS TCP**，因为 **UDP** 不被 SOCKS 支持。设置 **--dns-timeout** 为 **10**，默认值会因为短时间的通信尝试而直接判定为超时。</span></span></span></div>```shell
root@ts:/opt/framework# proxychains bloodhound-python -c All -u 'alice@prod.raven-med.local' -p elizabeth  -d prod.raven-med.local -ns 172.16.1.11 --dns-tcp --dns-timeout 10
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:53-<><>-OK
INFO: Found AD domain: prod.raven-med.local
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:53-<><>-OK
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:53-<><>-OK
WARNING: Could not find a global catalog server, assuming the primary DC has this role
If this gives errors, either specify a hostname with -gc or disable gc resolution with --disable-autogc
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:53-<><>-OK
INFO: Getting TGT for user
|DNS-request| prod.raven-med.local 
|S-chain|-<>-127.0.0.1:1080-<><>-4.2.2.2:53-<><>-OK
|DNS-response|: prod.raven-med.local does not exist
WARNING: Failed to get Kerberos TGT. Falling back to NTLM authentication. Error: [Errno Connection error (prod.raven-med.local:88)] [Errno 1] Unknown error
INFO: Connecting to LDAP server: dc01.prod.raven-med.local
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:53-<><>-OK
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:389-<><>-OK
INFO: Found 1 domains
INFO: Found 2 domains in the forest
INFO: Found 4 computers
INFO: Connecting to LDAP server: dc01.prod.raven-med.local
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:389-<><>-OK
INFO: Connecting to GC LDAP server: dc01.prod.raven-med.local
|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:3268-<><>-OK
INFO: Found 15 users
INFO: Found 48 groups
INFO: Found 5 gpos
INFO: Found 6 ous
INFO: Found 19 containers
INFO: Found 1 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: web01.prod.raven-med.local
............
INFO: Done in 01M 56S

```

<div class="J0lOec" id="bkmrk--26"></div>[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/0WAty5SLBM4Gra5u-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/0WAty5SLBM4Gra5u-image.png)

<div class="J0lOec" id="bkmrk-%E4%BD%BF%E7%94%A8%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BC%9A%E8%BE%93%E5%87%BA-json-%E6%96%87%E4%BB%B6%EF%BC%8C%E6%88%91%E4%BB%AC%E5%90%8C"><span class="VIiyi" lang="zh-CN"><span class="JLqJ4b" data-language-for-alternatives="zh-CN" data-language-to-translate-into="en" data-number-of-phrases="1" data-phrase-index="0"><span class="Q4iAWc">使用之后，会输出 json 文件，我们同样可以上传给 BloodHound。</span></span></span></div><div class="J0lOec" id="bkmrk--28"></div>#### **Impacket**

Impacket ([https://github.com/fortra/impacket](https://github.com/fortra/impacket)) 是一套可以对 AD 进行网络协议交互的工具，可用于枚举与利用，十分强劲。目前，我们只专注于枚举。

例如，我们可以使用 GetADUser.py 枚举域内用户

```shell
root@ts:/opt/framework/impacket/examples# proxychains python3 GetADUsers.py  -all prod.raven-med.local/alice:elizabeth  -dc-ip 172.16.1.11
ProxyChains-3.1 (http://proxychains.sf.net)
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:389-<><>-OK
[*] Querying 172.16.1.11 for information about domain.
Name                  Email                           PasswordLastSet      LastLogon           
--------------------  ------------------------------  -------------------  -------------------
Administrator                                         2023-01-20 18:38:16.572334  2023-03-30 19:53:43.462751 
Guest                                                 <never>              <never>             
krbtgt                                                2023-01-21 03:14:17.129622  <never>             
                                                      2023-03-28 02:21:44.373836  <never>             
sql_service                                           2023-01-28 19:35:17.958491  2023-03-28 03:04:56.416162 
app_security                                          2023-01-28 20:00:19.880249  <never>             
network_security                                      2023-01-28 20:00:30.270846  <never>             
alice                                                 2023-01-28 20:03:12.536442  2023-03-31 03:58:54.462135 
harold                                                2023-01-28 20:33:54.612025  <never>             
backup_operator                                       2023-01-28 21:53:00.350035  <never>             
john                                                  2023-01-29 01:02:53.942678  2023-03-28 02:06:57.796057 
newman                                                2023-02-14 04:21:09.365594  <never>             
jim                                                   2023-02-14 04:21:23.271692  <never>             
carl                                                  2023-02-14 04:21:51.818645  <never>             
fusco                                                 2023-02-14 04:22:23.256115  2023-03-30 19:58:17.243954 

```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/DuJuR5l7ZP9LjbFw-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/DuJuR5l7ZP9LjbFw-image.png)

使用 GetUserSPNs 来获取所有设置了 SPN 的用户

```shell
root@ts:/opt/framework/impacket/examples# proxychains python3 GetUserSPNs.py prod.raven-med.local/alice:elizabeth  -dc-ip 172.16.1.11
ProxyChains-3.1 (http://proxychains.sf.net)
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

|S-chain|-<>-127.0.0.1:1080-<><>-172.16.1.11:389-<><>-OK
ServicePrincipalName                       Name         MemberOf  PasswordLastSet             LastLogon                   Delegation 
-----------------------------------------  -----------  --------  --------------------------  --------------------------  ----------
MSSQLSvc/srv01.prod.raven-med.local:SQL01  sql_service            2023-01-28 19:35:17.958491  2023-03-28 03:04:56.416162             
MSSQLSvc/srv01.prod.raven-med.local:1433   sql_service            2023-01-28 19:35:17.958491  2023-03-28 03:04:56.416162  
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/DghWSd1rSqc0P8NE-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/DghWSd1rSqc0P8NE-image.png)

####   


#### **CrackMapExec**

CrackMapExec ([https://github.com/Porchetta-Industries/CrackMapExec](https://github.com/Porchetta-Industries/CrackMapExec)) 如今发展成了一款类似于 Impacket 的多功能 AD 枚举与利用瑞士军刀。请学员们自行下载、安装与探索。