在 Linux 上的信息搜集
在 Linux 上的信息搜集,这里有两层含义,一是指在Linux域主机上对所在域进行侦查,另一层是指使用 Kali Linux 或其他 Linux 攻击主机对目标域进行侦查。
第二个 Beacon
目前,我们只有一个来自 Web02 的 Beacon,以及 Web01 的 root 权限 Shell,还没有其他 PROD 域中用户的明文凭证。回想 chatjs 应用中出现的用户,我们发现他们都是域用户。
那么就可能存在密码重用,尤其是我们已经破解出 Alice 的密码为 elizabeth (无法还原出其他用户的密码)。再加上默认情况下,所有域用户都可以访问 SSH,那么我们不妨尝试使用 alice:elizabeth 登陆 Web01 的 SSH 服务。
我们成功登陆了 Web01。并且,我们通过 Chatjs 的利用获得了 root 权限,我们可以灵活地在 alice 与 root 用户之间切换。
查看 Alice 的描述,我们发现她可能具有对 File01 RDP 的访问。
我们知道 file01 有个公开可读可写的 SMB 目录 Tools,我们猜测其绝对路径为 C:\Tools (使用 UNC 路径执行程序可能会被阻止)。上传一个 Beacon,然后使用 SharpRDP (https://github.com/0xthirteen/SharpRDP) 在不开启 GUI 的情况下通过 RDP 协议远程执行该 Beacon。
sharprdp.exe computername=[FQDN] command="[程序绝对路径]" username=[域FQDN\用户名] password=[密码]
幸运的是,我们猜对了绝对路径,并且获得了新的 Beacon,来自 File01,当前用户为 PROD\Alice。这样,我们有了在 PROD 域的第一个 Beacon。
Linux域主机
RPCClient
在 Web01 上并没有内置 RPCClient,不过很多时候该应用是内置的,那我们透过 SOCKS 来枚举。使用 rpcclient,我们需要指定明文帐号密码,尽管有的时候空会话是允许的。
rpcclient -U <域 FQDB>/<账户>%<密码> <DC>
用户
我们通过 enumdomusers 命令来查看所有用户
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]
通过命令 query <RID> 来查看用户详情
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]...
群组
LDAPSearch
ldapsearch -h <DC IP> -p 389 -x -b "<站点>" -D '<域\用户>' -w '<密码>'
用户
ldapsearch -h <DC IP> -p 389 -x -b "<站点>" -D '<域\用户>' -w '<密码>'
我们指定了 objectclass 为 user,并且提取 samaccountname 属性:
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
主机
我们指定了 objectclass 为 computer,并且提取 dnshostname 属性:
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
BloodHound Python
当然也有一些其他的工具协助我们在Linux攻击主机上对域进行枚举甚至进行利用,例如 Impacket (https://github.com/SecureAuthCorp/impacket)系列工具、CME (https://github.com/Porchetta-Industries/CrackMapExec) 工具、pywerview (https://github.com/the-useless-one/pywerview) 等,以及上述提到的pbis-open,ldapsearch,rpcclient等工具,这里不做具体的用法展示,请学员们自行探索用法。
Impacket