文章目录
一、前言
渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。以下列举常用的信息收集命令与工具。
二、Windows信息收集
(一)CMD 本机信息收集
# 查看在线用户
query user
# 查看路由表
arp -a
# 查看信息信息
systeminfo
# 查看网络信息
ipconfig /all
# 查看进程信息
tasklist /svc
# 查看端口信息netstat -ano
# 查看共享文件
net share
wmic share get name,path,status
# 查看文件权限
icacls \\127.0.0.1\c$\$recycle.bin
# 内外资产对应for /f "delims=" %i in(p.txt)do @ping -w 1 -n 1 %i | findstr /c:"[10." /c:"[192." /c:"[172.">> out.txt
for /f "delims=" %i in(p.txt)do @ping -w 1 -n 1 %i | findstr "TTL=">> out1.txt
# 获取磁盘空间大小 1for /f "tokens=1-3" %a in('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"')do @echo wsh.echo "%b" ^&" free=" ^& FormatNumber^(cdbl^(%a^)/1024/1024/1024, 2^)^&"G"^&" size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/1024, 2^)^&"G"> %temp%\tmp.vbs & @if not "%c"=="" @echo(& @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs
# 获取磁盘空间大小 2
wmic logicaldisk get caption,freespace,size
wmic /node:127.0.0.1 /user:"domain\user" /password:"password" logicaldisk get caption,freespace,size
# 获取磁盘盘符
wmic logicaldisk where drivetype=3 get deviceid
# 远程获取盘符
wmic /node:127.0.0.1 /user:"domain\user" /password:"password" logicaldisk where drivetype=3 get deviceid
# 查看ip所在地curl ipinfo.io
# 批量测试用户权限for /f %i in(error.log)do @net use \\%i\ipc$ "password" /user:domain\username &&dir\\%i\c$ $ net use \\%i\ipc$ /d /y >> i.txt
# 获取连接过的wifi密码:for /f "skip=9 tokens=1,2 delims=:" %i in('netsh wlan show profiles')do @echo %j | findstr -i -v echo| netsh wlan show profiles %j key=clear
# 列目录dir /s /b c:\
(二)CMD 域信息收集
# 域用户
net user /domain
# 域用户组
net grouop /domain
# 域信任
nltest /domain_trusts
# 用户密码策略
net accounts /domain
# 查看指定主机共享
net view \\ip /domain
# 查看域管理员组的用户
net group "Domain admins" /domain
# 查看域内机器
net group "Domain Computers" /domain
# 查看企业管理员组的用户
net group "Enterprise admins" /domain
# 查看域控
net group "Domain Controllers" /domain
(三)Powershell命令信息收集
Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在Windows7及其以上的系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。PowerShell无须写到磁盘中,它可以直接在内存中运行。
#获取域林信息
powershell -exec bypass -command Get-ADForest
#获取当前域信息
powershell -exec bypass -command Get-ADDomain
#查看域控
powershell -exec bypass -command Get-ADDomainController
#查看所有域主机
powershell -exec bypass -command Get-ADComputer -filter *
#查看所有域用户
powershell -exec bypass -command Get-ADUser -filter *
#获取林中所有受信任的域对象
powershell -exec bypass -command Get-ADTrust -Filter *
# 获取磁盘空间大小## Get-CimInstanc
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property DeviceID,FreeSpace,Size
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property DeviceID,@{'Name'='Size (GB)';Expression={[math]::Round($_.Size/1GB,2)}},@{'Name'='FreeSpace (GB)';Expression={[math]::Round($_.FreeSpace/1GB,2)}}
powershell -exec bypass -command "Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property DeviceID,@{'Name' = 'Size (GB)'; Expression= {[math]::Round($_.Size/1GB,2)}},@{'Name'='FreeSpace (GB)';Expression={[math]::Round($_.FreeSpace/1GB,2)}}"## Get-WmiObject
Get-WmiObject -Class win32_logicaldisk | Format-Table DeviceId, @{n="Size(GB)";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace(GB)";e={[math]::Round($_.FreeSpace/1GB,2)}}
powershell -exec bypass -command "Get-WmiObject -Class win32_logicaldisk | Format-Table DeviceId, @{n="Size(GB)";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace(GB)";e={[math]::Round($_.FreeSpace/1GB,2)}}"## Get-Volume
Get-Volume
Get-Volume c
## Get-PSDrive
Get-PSDrive
Get-PSDrive c
3.1 知识补齐 Get-CimInstance 与 Get-WmiObject区别
这里引发一个问题,Get-CimInstance 与 Get-WmiObject 调用相同的Class实现相同的功能,有啥区别?应该使用哪一个?
CIM vs WMI
“通用信息模型”(CIM)是一种用于访问和显示计算机信息的开源标准。这是一个已经存在多年的行业标准,但它没有包括访问远程计算机上的数据的方法。
Windows Management Interface (WMI) 是微软针对windows平台,对CIM的一种实现。但是微软进加入了DCOM和RPC。WMI cmdlets使用DCOM访问远程机器,但DCOM这玩意属于“防火墙不友好”,就是要使用很多端口,你得配置好多防火墙规则,远程机器必须允许135, 445, 1024-1034端口,不方便不说还不安全。
微软在2012年发布了Windows Remote Management(WinRM),使用Web Services for Management protocol (WS-Man协议),这个WSMan协议使用5985端口(HTTP)和5986端口(HTTPS),防火墙非常友好。对应的新的cmdlets也在PowerShell 3.0 中加入。
旧的 WMI cmdlet 和新的 CIM cmdlet 都是基于 CIM 的。WMI 和 CIM cmdlet 之间的区别在于访问远程计算机时使用的协议和安全性。一旦他们到达远程计算机并进行身份验证,WMI 和 CIM 就会访问相同的数据。
应该使用哪一个?
毫无疑问,WMI 正在被弃用。今天的 PowerShell 严重依赖 PSRemoting 和包含的安全功能。Microsoft 在 PowerShell v3.0 中引入了基于 CIM 的 cmdlet 和 PSRemoting。任何运行 Windows 7 或更高版本和 Server 2008 SP2 及更高版本的计算机都可以并且应该使用Get-CIMInstance,大大提高您的安全性。
关系图如下:
(四)导出域信息(低权限可用)
4.1 LDAPDomainDump导出 - 常用
LDAPDomainDump是一款通过LDAP协议实现的活动目录信息导出工具。在活动目录域中,任何一个有效的域用户均可以通过LDAP协议来查询域内大量的信息。如通过adexplorer、adfind等工具连接查询。但是这类工具只能实时连接查询,无法将所有数据导出。而ldapdomaindump这款工具可以通过LDAP收集解析导出数据,并将其输出为HTML、CSV、TSV等格式。
# 项目地址:# https://github.com/dirkjanm/ldapdomaindump# ldapdomaindump.py
python ldapdomaindump.py ip -u domainname -p password -o filepath
# python打包exe
pip install pyinstaller
pyinstaller -F -w ldapdomaindump.py
ldapdomaindump.exe ip -u domainname -p password -o filepath
4.2 ADExplorer
# 微软签名工具
https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer
(五)内网扩散信息收集
端口扫描、banner识别
# fscan# https://github.com/shadow1ng/fscan
fscan -h 192.168.1.1/24
## 不进行爆破、不进行poc扫描
fscan -h 192.168.1.1/24 -nobr -nopoc
# serverscan# https://github.com/Adminisme/ServerScan
serverscan -h 192.168.1.1/24
三、总结
信息收集的详细程度就决定了渗透的深度和广度,所以不管是web安全还是内网安全等,信息收集是很重要的一个环节,所以熟悉cmd命令,powershell命令也是必不可少的,不能完全的依赖工具,工具需要落地这就增加了被发现的风险。各位师傅有好的意见和建议欢迎评论指教,感谢。微信公众号搜索关注艺说IT,发送消息:渗透书籍,立即获取下载链接。对你有用的话请一键三连,感谢。
版权归原作者 艺说IT 所有, 如有侵权,请联系我们删除。