进入内网之后,是一种由点到线再到面的测试,先弄清楚当前机器的情况,如在域中角色,提供的服务等信息;再以此为跳板收集其它机器的信息,当收集的信息足够多,拿下域控的可能型也就越高。
本机信息收集
为了后续的提权等操作,首先要尽可能拿下当前机器的权限,所以对当前机器的信息收集也是必要的。
查看系统配置信息
ssysteminfo
查看系统信息,但是内容太多在某些时刻无法通过菜刀等工具看到返回的结果,可以将内容输出到某个文件,也可以结合findstr
查询指定内容,如查询操作系统即软件的信息 systeminfo | findstr /B /C:"OS"
该指令输入的内容是比较多的,除了使用finder
选择输出外,部分信息可以使用其它指令单独显示,比如echo %processor_architecture%
查看系统架构,net statistics workstation
查看系统启动时间
其中的补丁信息可以使用wmic qfe get caption,description,hotfixid,installedon
获取
WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批命令脚本执行系统管理的支持。在cmd中有些时候查到的数据不全,如某些进程的pid,这时可以使用wmic进行操作,WMIC提供了大量的全局开关、别名、动词、命令和丰富的命令行帮助增强用户接口。wmic product get name,version
,查看系统安装的软件版本等内容。wmic /node:localhost /namespace:\\root\securitycenter2 path antivirusproduct get displayname /format:list
查杀软
初次之外,还可以使用netsh firewall show config
和netsh advfirewall firewall show config
查看防火墙配置信息
查看系统服务信息
wmic startup get command,caption
,查看启动程序信息wmic service list brief
,查询本机服务信息
还可以使用tasklist
查询进程信息schtasks /query /fo LIST /V
,查看计划任务
netstat -ano
查看端口列表
注意,一般查看进程端口,先查进程pid,在根据pid查端口
查看系统登录信息
query user
,登录到系统的用户信息
net session
,列出连接会话信息,但是一般需要高权限才能执行
自动信息收集
很多后渗透模块都可以进行信息收集,这里不谈,分享个嫖到的脚本
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"
wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html
复制为bat
文件,结果为out.html
保存在c盘根目录
,名称路径可自行修改。
域内信息收集
判断是否存在域
whoami
,如果当前账户为域用户,则返回结果通常为域名\用户名
ipconfig
,如果是双网卡,一般存在内网
systeminfo
,如果在域中,则如图,否则为workgroup
net config workstation
,在域中,通常计算机全名为计算机名.域名
不在域中如下图
net time /domain
,查看时间服务器,域中机器的dns服务器和时间服务器通常为域控机。如下图则是存在域且当前登录用户为域用户
如下图则表示不在域中
如下图则表示在域中,但当前用户非域用户
除此之外,收集其它内容的时候都能看到,比如系统信息,用户信息等
探测域内存主机&端口
探测存活主机和端口平时最容易想到的工具是nmap
,但这个工具太大,直接安装存在风险,端口转发受限于网络环境,这里聊聊其它方法
powershell
powershell
可以在渗透中提供强大的助力,下面这些脚本使用的时候记得修改 ip地址
扫描存活ip,最前面的1..255
是ip地址的d段,最后范围是192.168.0.1-255,判断和修改方式下同
1..255 | % {echo "192.168.0.$_"; ping -n 1 -w 100 192.168.0.$_} | Select-String ttl
判断主机类型,根据ttl值判断,范围192.168.0.1-255
1..255 | % {echo "192.168.0.$_"; ping -n 1 -w 100 192.168.0.$_} | Select-String ttl |% { if ($_ -match "ms") { $ttl = $_.line.split('=')[2] -as [int]; if ($ttl -lt 65) { $os = "linux"} elseif ($ttl -gt 64 -And $ttl -lt 129) { $os = "windows"} else {$os = "cisco"}; write-host "192.168.0.$_ OS:$os" ; echo "192.168.0.$_" >> scan_results.txt }}
扫描端口
24..25 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.1.119",$_)) "Port $_ is open!"} 2>$null
24..25 |% {echo "$_ is "; Test-NetConnection -Port $_ -InformationLevel "Quiet" 192.168.1.119}2>null
扫描指定端口的ip
foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 192.168.0.$ip}
arp扫描
在内网里通常使用mac地址进行机器寻找,其可以通过arp
协议实现
小工具
由很多免安装的小工具也可以进行扫描,比如nbtscan
,直接传到目标服务器上运行即可,工具下载地址:http://www.unixwiz.net/tools/nbtscan.html ,用法:nbtscan.exe 网段
,更多用法参考:nbgtscam.exe /?
含义如下:
|Token|含义|
|——|——|
SHARING|机器正在运行的文件和打印共享服务,但这并不一定有内容共享
DC|机器可能是Windows NT域控制器,无论是主域还是辅助域。
U=user |机器可能有一个具有指定名称的登录用户
IIS |机器可能安装了Microsoft的Internet信息服务器(IIS)
EXCHANGE |机器可能安装Microsoft Exchange
NOTES |单机器可能安装Lotus Notes电子邮件客户端
? |没有识别出NETBIOS资源
telnet
telnet
常规使用是和服务器建立连接,也开业用来探测端口是否开放
用法:telnet 主机 端口
,如:telnet dc 3389
。注意:不是所有机器都安装了此服务。
查看用户&机器&会话相关信息
查看机器相关信息
net view /domain
,查询域信息,判断当前机器加入的域
net view /domain:域名
,查询域内所有主机
在域中,有一类至关重要的机器叫域控制器,简称域控,机器名通常为DC
,在实际环境中,域控为一主一备用两台。netdom query pdc
,查看域控名称
查看用户相关信息
net user
查询当前机器所有用户,net user /domain
查看域用户
net user 用户名
查看当前机器内的用户信息
net user 用户名 /domain
查看当前机器内的域用户信息
注意对比上述结果的区别,此外net user localgroup
,net user localgroup /domain
和net group /domain
也是有区别的wmic useraccount get /all
,获取域内用户的详细信息