欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

SharpSniper利用分析

来源:本站整理 作者:佚名 时间:2019-09-20 TAG: 我要投稿

SharpSniper用于在域环境中找到指定域用户的IP地址,需要具有读取域控制器日志的权限,地址:https://github.com/HunnicCyber/SharpSniper
本文将要对SharpSniper的实现原理进行分析,扩展用法,分别介绍如何使用wevtutil.exe和powershell脚本实现相同的功能,分享其中需要注意的细节。
0x01 简介
本文将要介绍以下内容:
· SharpSniper实现原理
· 使用wevtutil实现
· 使用powershell实现
0x02 SharpSniper实现原理
通过查询域控制器上的用户登录日志(Event ID:4624),获得域用户使用过的IP地址。
具体实现如下:
1.通过查询日志获得域用户使用过的IP
XPath查询条件(以查询用户testb为例):
"Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"
对应代码地址: https://github.com/HunnicCyber/SharpSniper/blob/master/QueryDC.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/SharpSniper/blob/master/Program.cs#L54
0x03 使用wevtutil实现
1.查询指定用户(以查询用户testb为例)的登录日志
cmd命令如下:
wevtutil qe security /format:text /q:"Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"
包括每条日志的详细信息,如下图:

2.从详细信息中提取出ip
这里可以借助find命令进行筛选。
cmd命令如下:
wevtutil qe security /format:text /q:"Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"|find "Source Network Address"
筛选后的结果如下图:

从日志中提取出用户testb使用过的所有IP地址。
补充:XPath查询条件的编写
可以使用Event Viewer自动生成需要的XPath语句。
1.打开Event Viewer
cmd执行:eventvwr.msc
2.选择Create Custom View..
如下图:

3.设置查询条件后选择XML标签
如下图:

自动生成需要的XPath语句,如下图:

4.使用wevtutil调用查询语句的两种方法
(1)按照/q参数的格式进行修改
需要提取自动生成的XPath语句中Select标签中的内容。
(2)通过读取文件调用查询
直接使用自动生成的XPath语句。
将步骤3中的查询语句保存到文件,例如custom1.xml。
读取文件调用查询的命令如下:
wevtutil qe custom1.xml /sq:true /rd:true /f:text
0x04 使用powershell实现
1.查询指定用户(以查询用户testb为例)的登录日志
Get-WinEvent -LogName "security" -FilterXPath "Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"|Format-List
包括每条日志的详细信息,如下图:

2.从详细信息中提取出ip的三种方法
(1)使用find命令
Get-WinEvent -LogName "security" -FilterXPath "Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"|Format-List|find "Source Network Address"
结果如下图:

(2)通过正则表达式进行过滤
第一种实现方法:
使用SharpSniper中的正则表达式,对应的powershell命令如下:
$events = Get-WinEvent -LogName "security" -FilterXPath "Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"
$i=0
while ($i -lt $events.length) {
    $IP=[regex]::matches($events[$i].Message, '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b')
    Write-Host $IP
    $i++
}
结果如下图:

第二种实现方法:
搜索关键词"Source Network Address:",对应的powershell命令如下:
$events = Get-WinEvent -LogName "security" -FilterXPath "Event[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='testb']]"

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载