如何使用Hunt-Sleeping-Beacons识别休眠的Beacon
关于Hunt-Sleeping-Beacons
Hunt-Sleeping-Beacons项目的主要功能是帮助广大研究人员在运行时或其他正在运行进程的上下文场景中识别休眠的Beacon。为了实现这个目标,我们通过观察发现,Beacon会在回调过程中尝试调用sleep函数。在调用sleep的过程中,会将线程的状态设置为“DelayExecution”,而我们就可以将其作为第一个指标来识别线程是否在执行某个Beacon。
将所有状态为“DelayExecution”的线程全部枚举出来之后,我们就可以通过多种度量指标来识别潜在的休眠Beacon了。
度量指标
1、如果Beacon不使用基于文件的内存,那么NtDelayExecution的调用堆栈将包含无法与磁盘上的文件关联的内存区域; 2、如果Beacon使用了模块Stomping技术,则修改NtDelayExecution调用堆栈中的一个模块; 3、通过枚举标记为私有(非共享)存储的内存区域,可以对睡眠的内联钩子进行指纹识别; 4、由于Beacon等待命令的时间比实际执行代码的时间要长,因此可以通过比较SYSTEM_THREAD_INFORMATION的KernelTime和UserTime字段来对其进行指纹识别;
为了减少误报率,我们只考虑使用wininet.dll或winhttp.dll。
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/thefLink/Hunt-Sleeping-Beacons.git
工具使用
不基于文件的Beacon样例
[!] Suspicious Process: PhantomDllHollower.exe
[*] Thread (9192) has State: DelayExecution and abnormal calltrace:
NtDelayExecution -> C:\WINDOWS\SYSTEM32\ntdll.dll
SleepEx -> C:\WINDOWS\System32\KERNELBASE.dll
0x00007FF8C13A103F -> Unknown or modified module
0x000001E3C3F48FD0 -> Unknown or modified module
0x00007FF700000000 -> Unknown or modified module
0x00007FF7C00000BB -> Unknown or modified module
[*] Suspicious Sleep() found
[*] Sleep Time: 600s
使用了模块Stomping的Beacon样例
[!] Suspicious Process: beacon.exe (5296)
[*] Thread (2968) has State: DelayExecution and uses potentially stomped module
[*] Potentially stomped module: C:\Windows\SYSTEM32\xpsservices.dll
NtDelayExecution -> C:\Windows\SYSTEM32\ntdll.dll
SleepEx -> C:\Windows\System32\KERNELBASE.dll
DllGetClassObject -> C:\Windows\SYSTEM32\xpsservices.dll
[*] Suspicious Sleep() found
[*] Sleep Time: 5s
Beacon内联钩子休眠
[!] Suspicious Process: ThreadStackSpoofer.exe (4876). Potentially hooked Sleep / Modifies Kernel32.dll
通过对比KernelTime和UserTime来识别常见Beacon行为
[!] Suspicious Process: ThreadStackSpoofer.exe (4876). Thread 1132 has state DelayExecution and spends 94% of the time in usermode
项目地址
https://github.com/thefLink/Hunt-Sleeping-Beacons
参考资料
https://github.com/mgeeky/ThreadStackSpoofer https://github.com/waldo-irc/YouMayPasser/blob/master/Lockd/Lockd/Sleep.cpp https://twitter.com/_forrestorr https://twitter.com/waldoirc https://www.forrest-orr.net/post/malicious-memory-artifacts-part-i-dll-hollowing
精彩推荐
相关文章
- 行为动作识别
- C++版OpenCV使用神经网络ANN进行mnist手写数字识别[通俗易懂]
- JAVA使用Tess4J进行ocr识别,并切换中文
- Java使用OpenCV进行答题卡识别
- 使用Detectron2识别自己的图片数据
- TypeScript-tsx文件webstorm无法识别alias配置解决方法
- AI+临床试验丨初始款项7000万美元,Tempus为GSK提供AI平台和去识别化患者数据库
- 手把手教你使用CNN进行交通标志识别(已开源)
- AI 实战篇 |基于 AI开放平台实现 【货币识别】 功能,彻底解决货币盲区
- 如何使用Web Shell Detector识别和检测站点中的可疑Shell脚本
- 识别限界上下文
- 干货 | 虹膜识别数据安全要求标准草案、编制说明、应用指南与调研报告
- 使用pyWhat从海量数据中识别出邮件或IP地址
- 河道船舶识别检测系统
- Linux如何自动识别网卡驱动程序(linux识别网卡驱动)
- GitHub 现在支持安全密钥和生物识别选项进行身份验证
- 百度、Face++、腾讯、商汤活体识别比拼 谁真正掌握了未来金融密钥?
- 如何使用MSSQL识别符号(mssql识别符怎么使用)
- 命令跨越Oracle,无法使用EXP命令(oracle不识别exp)
- android使用gesturedetector手势识别示例分享