内网渗透-windows信息收集(实战命令与工具)

一、前言

  渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。以下列举常用的信息收集命令与工具。

二、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
# 获取磁盘空间大小 1
for /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,大大提高您的安全性。

关系图如下:

img

(四)导出域信息(低权限可用)

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,发送消息:渗透书籍,立即获取下载链接。对你有用的话请一键三连,感谢。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/syl321314362/article/details/129542679