跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

锋利刀片使用情况分析


Anonymous

推荐的帖子

0x00 前言

SharpSniper用于在域环境中查找指定域用户的IP地址。它需要读取域控制器日志的权限。地址是https://github.com/HunnicCyber/SharpSniper.

本文将分析SharpSniper的实现原理,扩展其用法,介绍如何使用wevtutil.exe和powershell脚本实现同样的功能,并分享需要注意的细节。

0x01 简介

本文将介绍以下内容:

SharpSniper的实现原理

使用wevtutil实现

通过powershell实现

0x02 SharpSniper实现原理

通过查询域控制器上的用户登录日志(事件ID:4624)获取域用户使用的IP地址。

具体实现如下:

1.通过查询日志获得域用户使用过的IP

XPath查询条件(以查询用户testb为例):

Event[System[(EventID=4624)]和event Data[Data[@ Name=' target username ']=' testb ']]'

相应的代码地址:

https://github . com/HunnicCyber/sharpniper/blob/master/query DC . cs # L16

2.通过正则表达式过滤出域用户使用过的IP

正则表达式:

\b\d{1,3}\。\d{1,3}\。\d{1,3}\。\d{1,3}\b '

\b表示单词的前边界或后边界。

\d{1,3}表示字符数在1到3位数之间。表示匹配的字符。“

相应的代码地址:

https://github . com/HunnicCyber/sharpniper/blob/master/program . cs # L54

0x03 使用wevtutil实现

1.查询指定用户(以查询用户testb为例)的登录日志

Cmd命令如下:

wevtutil QE security/format:text/q:' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']]'

包括每个日志的详细信息,如下图所示

2-1.png

2.从详细信息中提取出ip

您可以使用find命令在此处进行筛选。

Cmd命令如下:

wevtutil QE security/format:text/q:' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']' | find '源网络地址'

筛选后的结果如下

2-2.png

从日志中提取用户testb使用的所有IP地址。

补充:XPath查询条件的编写

您可以使用事件查看器自动生成所需的XPath语句。

1.打开事件查看器。

Cmd执行:eventvwr.msc

2.选择创建自定义视图.

如下图

3-1.png

3.设置查询条件后选择XML标签。

如下图

3-2.png

自动生成所需的XPath语句,如下图所示

3-3.png

4.使用wevtutil调用查询语句的两种方法

(1)根据/q参数的格式进行修改。

提取自动生成的XPath语句中Select标记的内容。

(2)通过读取文件调用查询。

使用直接生成的XPath语句。

将步骤3中的查询语句保存到一个文件中,例如custom1.xml

读取文件调用查询的命令如下:

wevtutil QE custom 1 . XML/sq:true/rd:true/f:text

0x04 使用powershell实现

1.查询指定用户(以查询用户testb为例)的登录日志

get-WinEvent-LogName ' security '-filter XPath ' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']' | Format-List

包括每个日志的详细信息,如下图所示

4-1.png

2.从详细信息中提取出ip的三种方法

(1)使用find命令

get-WinEvent-LogName ' security '-filter XPath ' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']]' | Format-List | find '源网络地址'

结果如下

4-2.png

(2)通过正则表达式进行过滤

第一种实现方法:

使用SharpSniper中的正则表达式,相应的powershell命令如下:

$ events=Get-WinEvent-LogName ' security '-filter XPath ' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']]'

$i=0

while ($i -lt $events.length) {

$ IP=[regex]:matches($ events[$ I]。消息,' \b\d{1,3}\。\d{1,3}\。\d{1,3}\。\d{1,3}\b ')

写主机$IP

$i

}

结果如下

4-3.png

第二种实现方法:

搜索关键字“源网络地址”,对应的powershell命令如下:

$ events=Get-WinEvent-LogName ' security '-filter XPath ' Event[System[(Event id=4624)]和Event Data[Data[@ Name=' target username ']=' testb ']]'

$i=0

while ($i -lt $events.length) {

$ IP=[regex]:matches($ events[$ I]。消息,“源网络地址:(。)') | %{$_.Groups[1].Value.Trim()}

写主机$IP

$i

}

结果如下

4-4.png

(3)先转换成xml格式,再进行筛选

输出时只有消息栏,不能选择只输出“源网络地址”的内容

如果输出内容在这里被转换成xml格式,那么对应于‘源网络地址’的列就是ipaddress。

参考资料:

https://blog.51cto.com/beanxyz/1695288

对应的powershell命令如下:

$ Events=Get-WinEvent-LogName ' security '-filter XPath ' Event[System[(事件id=4624)]和事件数据[Data[@ Name=' target username ']=' testb ']]'

ForEach(事件中的事件){

$eventXML=[xml]$Event .ToXml()

for($ I=0;$i -lt $eventXML .事件。事件数据。数据。数数;$i ) {

add-Member-input object $ Event-Member type note property-Force-Name $ Event XML .事件。事件数据.数据[$i].名称-值$eventXML .事件。事件数据.数据[$i].#文本'

}

}

$事件|选择IP地址

结果如下图

4-5.png

补充:使用powershell调用自动生成的XPath查询条件

参照0x03中的内容,使用事件查看器自动生成需要的XPath语句

直接保存在变量$xml中并进行调用,对应的powershell命令如下:

$xml=@ '

*[系统[(事件ID=4624)和创建时间[时间差异(@系统时间)=604800000]]]

@

Get-WinEvent -FilterXml $xml

0x05 小结

本文分析了利器的实现原理,扩展用法,分别介绍如何使用wevtutil.exe和powershell脚本实现相同的功能,可以用来获取域环境中关键用户使用过的知识产权。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...