零基础学黑客,搜索公众号:白帽子左一
进入内网之后,是一种由点到线再到面的测试,先弄清楚当前机器的情况,如在域中角色,提供的服务等信息;再以此为跳板收集其它机器的信息,当收集的信息足够多,拿下域控的可能型也就越高。
本机信息收集
为了后续的提权等操作,首先要尽可能拿下当前机器的权限,所以对当前机器的信息收集也是必要的。
查看系统配置信息
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,获取域内用户的详细信息