• Stars
    star
    262
  • Rank 156,136 (Top 4 %)
  • Language
    C++
  • Created over 3 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

40行代码检测到大部分CobaltStrike的shellcode

介绍

无文件落地的木马主要是一段可以自定位的shellcode组成,特点是没有文件,可以附加到任何进程里面执行。一旦特征码被捕获甚至是只需要xor一次就能改变特征码.由于传统安全软件是基于文件检测的,对目前越来越多的无文件落地木马检查效果差.

基于内存行为特征的检测方式,可以通过检测执行代码是否在正常文件镜像区段内去识别是否是无文件木马.由于cobaltstrike等无文件木马区段所在的是private内存,所以在执行loadimage回调的时候可以通过堆栈回溯快速确认是否是无文件木马

检测只需要40行代码:

  1. 在loadimagecallback上做堆栈回溯
  2. 发现是private区域的内存并且是excute权限的code在加载dll,极有可能,非常有可能是无文件木马或者是shellcode在运行

核心代码如下:

void LoadImageNotify(PUNICODE_STRING pFullImageName, HANDLE pProcessId, PIMAGE_INFO pImageInfo)
{
 UNREFERENCED_PARAMETER(pFullImageName);
 UNREFERENCED_PARAMETER(pProcessId);
 UNREFERENCED_PARAMETER(pImageInfo);
 if (KeGetCurrentIrql() != PASSIVE_LEVEL)
  return;
 if (PsGetCurrentProcessId() != (HANDLE)4 && PsGetCurrentProcessId() != (HANDLE)0) {
  if (WalkStack(10) == false) {

   DebugPrint("[!!!] CobaltStrike Shellcode Detected Process Name: %s\n", PsGetProcessImageFileName(PsGetCurrentProcess()));
   ZwTerminateProcess(NtCurrentProcess(), 0);
   return;
  }
 }
 return;
}

堆栈回溯:

bool WalkStack(int pHeight)
{
 bool bResult = true;
 PVOID dwStackWalkAddress[STACK_WALK_WEIGHT] = { 0 };
 unsigned __int64  iWalkChainCount = RtlWalkFrameChain(dwStackWalkAddress, STACK_WALK_WEIGHT, 1);
 int iWalkLimit = 0;
 for (unsigned __int64 i = iWalkChainCount; i > 0; i--)
 {
  if (iWalkLimit > pHeight)
   break;
  iWalkLimit++;
  if (CheckStackVAD((PVOID)dwStackWalkAddress[i])) {
   DebugPrint("height: %d address %p \n", i, dwStackWalkAddress[i]);
   bResult = false;
   break;
  }
 }
 return bResult;
}

使用:

编译好驱动,加载驱动,之后运行测试看看:

  1. 普通生成(x32与x64)测试: 1.png

  2. 基于VirtualAlloc的C代码测试:

测试结果: 3.png

  1. 基于powershell的测试: 4.png

  2. 基于python的测试 5.png 测试结果: 6.png

弊端: 目前已知的ngentask.exe、sdiagnhost.exe服务会触发这个检测规则(看样子是为了执行一些更新服务从微软服务端下载了一些shellcode之类的去运行).如果后续优化则需要做一个数字签名校验等给这些特殊的进程进行加白操作.这是工程问题,不是这个demo的问题

详细帖子链接: https://key08.com/index.php/2021/07/25/1260.html 相似但是不相同的项目: https://key08.com/index.php/2021/02/24/912.html

More Repositories

1

DuckMemoryScan

检测绝大部分所谓的内存免杀马
C++
673
star
2

Antivirus_R3_bypass_demo

分别用R3的0day与R0的0day来干掉杀毒软件
C++
394
star
3

MakeInfinityHookGreatAgain

让Etwhook再次伟大! Make InfinityHook Great Again!
C++
120
star
4

AV-Killer

Antivirus Killer
C++
98
star
5

DuckSandboxDetect

沙箱测试,测评国内常见沙箱的代码与结论
C++
96
star
6

CowInjecter

滥用cow机制进行全局注入
C++
89
star
7

huoji_debuger

ayy debuger
C++
88
star
8

NetWatch

威胁流量检测系统
C
71
star
9

ai-webshell-detect

机器学习检测webshell
Python
65
star
10

numen

简单安排一下 autochk.sys 这个rootkit
C++
63
star
11

DuckSysEye

SysEye是一个window上的基于att&ck现代EDR设计思想的威胁响应工具.有效检测常见的未知威胁与已知威胁.防守方的利剑
63
star
12

Etw-Syscall

https://key08.com/index.php/2021/10/19/1375.html
C++
61
star
13

cpu_duck

关于intel和amd指令行为不一样这件事
C++
57
star
14

goodeye

https://githacks.org/Shawick/goodeye.git
C++
43
star
15

ACPI_SANDBOX_DETECT

通过ACPI检测沙箱
C++
41
star
16

white_patch_detect

通杀检测基于白文件patch黑代码的免杀技术的后门
C
38
star
17

APT_Step_Bear_Inject

复现《EDR的梦魇:Storm-0978使用新型内核注入技术“Step Bear”》
C++
32
star
18

GpuzMaper

using gpuz to load driver
C++
31
star
19

Heuristic_antivirus_engine_by_huoji

基于UC的启发式杀毒引擎[还没做完]
C
30
star
20

AI_Aimbot_Detecter

AI 检测FPS游戏中的微自瞄
SourcePawn
26
star
21

csgo2_tiny_server_plugin_system

a server plugin system for cs2 server,power by lua
C++
22
star
22

battleye

battleye shellcode
C
18
star
23

safe_duck

一款linux下的安全产品目的是满足个人安全需求有SSH爆破防护和SYN攻击扫描防护功能,基于netfilter,
C
15
star
24

Microsoft_Kernel_Memory_Leak

win32kbase!NtDCompositionCommitSynchronizationObject and win32kbase!NtGdiGetCertificate
14
star
25

infosec_chrome_ext

安全人员小助手油猴插件
JavaScript
14
star
26

Huoji_Rust_Legacy_cheat

Fully featured Rust Legacy cheat by Huoji's
C#
12
star
27

mash_hypervisor

mash hypervisor host pml4
C++
12
star
28

CSGO-AntiCheat-Demo-By-Huoji

CSGO AntiCheat Demo By HuoJi
C++
12
star
29

key08.com

web security tools source list from Hax Wiki
C++
5
star
30

log4j_detect

学习java native agent时候写的小轮子:检测log4j漏洞利用
C++
5
star
31

traffic-duck

traffic duck
C++
4
star
32

cs2_funny_trash_plugin

Lua
4
star
33

GameTools

C++
3
star
34

csgo-webradar-client

A shitty web-based radar for Counter-Strike: Global Offensive
C++
3
star
35

RustExtended_Leaked

RustExtended Leaked By Huoji's
C#
1
star
36

stickrpghookeditedbytomson

C++
1
star
37

wghostk_CTF

幽灵网安CTF
PHP
1
star
38

coh2_game_map_script

coh2 map script by huoji
1
star