PS:文中提到的
PowerSploit
包括操作系统,当前用户权限,内网ip段,杀毒软件,端口开放情况,系统打的补丁,网络状况,共享文件夹等,如果是域内的主机的话,操作系统、补丁、运行的服务、杀软等一般是域管批量用脚本安装的。
本机网络配置
ipconfig /all
:
### 操作系统
查询操作系统及版本信息,补丁信息等等:
systeminfo
查询系统体系架构:
echo %PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:
wmic product get name,version
PS:在win10中,输入
wmic /?
会提示wmic已弃用,但在server2012R2,win7等版本中可以正常使用
-
powershell中可替代该命令的是
Get-WmiObject
:
Get-WmiObject -class win32_product | Select-Object -property name,version
-
查询本机服务:
wmic service list brief
-
查询进程:
tasklist
,或者:
wmic process list brief
常见的杀软进程:
-
查看计划任务:
schtasks /query /fo LIST /v
此处在我的靶机Server2008R2中出现了错误:无法加载列资源,这里把编码暂时设置为英文:
chcp 437
,之后再改回来:
chcp 936
即可
-
查看主机的开机时间:
net statistics workstation
-
查看用户列表:
net user
-
查看本地管理员信息:
net localgroup administrators
-
查看当前在线的用户:
query user || qwinsta
-
查看本地计算机与所连接客户端之间的会话:
net session
对于该指令,一开始我的机器上报错:"发生系统错误5。拒绝访问",找了一下解决办法,只要以管理员身份运行即可,此处靶机没有回话,所以显示为空
-
查看端口:
netstat -ano
-
查看补丁信息:
systeminfo
,
wmic qfe get caption,description,hotfixid,installedon
-
查看本机共享列表:
net share
,
wmic share get name,path,status
-
查询路由表及所有可用的ARP缓存表:
route print
,
arp -a
-
查看防火墙相关:
-
查看防火墙配置:
netsh firewall show config
-
关闭防火墙:
-
winserver 2003之前:
netsh firewall set opmode disable
-
winserver 2003之后:
netsh advfirewall set allprofiles state off
一般来说不要操作防火墙的开关,风险极大,只需要查看配置即可
-
查看代理:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
-
查询远程连接服务:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
连接端口为16进制数0xd3d,转换为10进制就是3389
使用empire收集信息
在攻击机上安装empire后,使用
usemodule powershell/situational_awareness/host/winenum
即可收集相关信息,注意使用该模块需要拿到管理员权限
-
查看当前权限:
whoami
-
获取域id:
whoami /all
-
获取指定用户的详细信息:
net user xxx /domain
## 判断是否存在域
-
使用
ipconfig /all
即可做出判断
-
此时发现域名后,利用nslookup命令直接解析域名的ip,借此来判断dns服务器与域控是否在同一主机上
nslookup 域名
-
查询当前的登录域与用户信息:
net config workstation
-
判断主域:
net time /domain
若是此命令在显示域处显示WORKGROUP,则不存在域,若是报错:发生系统错误5,则存在域,但该用户不是域用户
## 探测域内存活主机
-
利用ICMP进行探测:
for /L %I in (1,1,254) DO @ping -2 1 -n 1 192.168.52.%I | findstr "TTL="
我在本地机器中做了小小的修改,让它只扫描141到142这段
-
利用empire中的arpscan模块:
usemodule situational_awareness/network/arpscan
,设置Range(范围)后即可扫描
-
使用telnet进行扫描:
telnet 主机名 22
-
使用metasploit进行扫描:
需要用到的是auxiliar/scanner/portscan/ack、ftpbounce、syn、tcp、xmas
等模块
-
PowerSploit中的Invoke-Portscan.ps1脚本,位于Recon目录下
-
使用Nishang的PortScan模块,位于scan目录下,上传到主机上执行
获取Banner
扫描到端口后就要获取到其Banner信息,接着就可以在漏洞库里查找poc,这个可以找一下常见的端口的服务来得知
-
查看域控主机名:
nslookup -type=SRV \_ladp._tcp
-
查看域控制器组:
net group "Domain Controllers" /domain
,
netdom query pdc
在大型企业中,域控制器组中的用户会不止一个,这是为了保证主域控故障时可以切换到备用域控制器
## 获取域内用户和管理员信息
-
查询所有域用户列表:
net user /domain
-
获取域内用户的详细信息:
wmic useraccount get /all
,可以获取到用户名,描述信息,SID域名等
-
查看存在的用户:
dsquery user
-
查询本地管理员组用户:
net localgroup administrators
-
查询域管理员用户组:
net group "domain admins" /domain
-
查询管理员用户组:
net group "Enterprise Admins" /domain
## 定位域管理员
常规渠道有二个,日志与会话,日志是本地机器的管理员日志,可以用脚本或者内置应用wevtutil导出来看
### 工具
psloggedon.exe
,
netview.exe
,
PVEFindADUser.exe
,powersploit的PowerView脚本,Empire的user_hunter模块等
查找域管理进程
-
net group "Domain Admins" /domain
-
列出本机的所有进程及进程用户:
tasklist /v
在以上进程中尽量查找域管理员进程或是与其相关的进程
### 查询域控的域用户会话
-
查询域控制器列表:
net group "Domain Controllers" /domain
-
收集域管理员列表:
net group "Domain admins" /domain
-
收集所有活动域的会话列表:
NetSess -h
,使用的是
NetSess.exe
目前还没有任何会话,所以显示无
## 利用powershell收集域信息
首先要将powershell的权限限制更改为
RemoteSigned
,这样就可以执行本地上的脚本
输入:
Get-ExecutionPolicy
,发现自己并不是RemoteSigned权限,输入:
Set-ExecutionPolicy RemoteSigned
,按Y确定即可,在本地虚拟机测试时还可以将脚本权限改为
Unrestricter
,这样可以执行来自网络与本地的任何脚本
此处要使用的脚本在PowerSploit/Recon中,将要用到的PowerView.ps1传入靶机,在powershell中打开该脚本目录并导入:
Import-Module .\PowerView.ps1
就可以进行收集了
具体命令的相关用法在
PowerSploit/Recon/READE.md
中
针对内网渗透这方面自己是边学习内网安全攻防这本书边整理的,由于是初学者且没有在真实环境实战过,文内有错误还请师傅们提出,水平一般还望见谅