Paul C's Blog

To be funny,to grow up!

0%

TEB-PEB-SEH

去混淆工具使用

使用下面这条命令快速去混淆。

Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Import-Module .\Revoke-Obfuscation.psd1


下列命令可以针对EID 4104脚本块日志执行分析检测:

Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose

Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose

Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose
下列命令可以针对demo.evtx中的数据记录执行完整检测:

$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose
下列命令可以对本地或远程托管的测试脚本执行检测:

Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk

Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

1.伪装vc++5.0代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 111111 -___
PUSH 111111 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
nop
jmp 原入口地址


2.胡乱跳转代码:
push ebp
mov ebp,esp
inc ecx
push edx
ADD ESP,-6C
nop
pop edx
dec ecx
pop ebp
ADD ESP,6C
inc ecx
loop somewhere /跳转到上面那段代码地址去!

somewhere:
nop /“胡乱”跳转的开始…
jmp 下一个jmp的地址 /在附近随意跳
jmp … /…
jmp 原入口地址 /跳到原始oep


3.伪装c++代码:
push eax
mov ebp,esp
push -1
push 111111
push 111111
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
nop
nop
jmp 原入口地址


4.伪装Microsoft Visual C++ 6.0代码:

PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,1
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
nop
POP EAX
nop
ADD ESP,1
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
nop
POP EAX
nop
POP EAX
MOV EBP,EAX
JMP 原入口地址


5.伪装防杀精灵一号防杀代码:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
nop
mov dword ptr fs:[0],esp
nop
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址


6.伪装防杀精灵二号防杀代码:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址


7.伪装木马彩衣(无限复活袍)代码:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -___
PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!
jo 原入口地址
jno 原入口地址
call 下一地址


8.伪装木马彩衣(虾米披风)代码:
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop somewhere /跳转到下面那段代码地址去!

someshere:
nop /“胡乱”跳转的开始…
jmp 下一个jmp的地址 /在附近随意跳
jmp … /…
jmp 原入口的地址 /跳到原始oep


9.伪装花花添加器(神话)代码:—————-根据C++改
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口地址
push eax
retn


10.伪装花花添加器(无极)代码:
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax


11.伪装花花添加器(金刚)代码:————根据VC++5.0改
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口地址
jmp eax


12.伪装花花添加器(杀破浪)代码:
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax


12.伪装花花添加器(痴情大圣)代码:
nop
……….省略N行nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口地址
push eax
retn


13.伪装花花添加器(如果*爱)代码:
nop
……..省略N行nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口地址
jmp eax


14.伪装PEtite 2.2 -> Ian Luck代码:
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp 原入口地址 '执行到程序的原有OEP


15.无效PE文件代码:
push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
MOV DWORD PTR FS:[0],EAX \
POP EAX |
POP EAX \
MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
POP EAX /
POP EAX |
MOV DWORD PTR FS:[0],EAX /
loop 原入口地址


16.伪装防杀精灵终极防杀代码:
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp 原入口地址


17.伪装木马彩衣(金色鱼锦衣)花代码
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口地址
push eax
retn


18.
在mov ebp,eax
后面加上
PUSH EAX
POP EAX


19.伪装UPX花指令代码:

pushad
mov esi,m.0044D000
lea edi,dword ptr ds:[esi+FFFB4000]
push edi
or ebp,FFFFFFFF
jmp short m.00477F2A


20.
push ebp
mov ebp,esp
inc ecx
push edx
pop edx
dec ecx
pop ebp
inc ecx
jmp 原入口

21、
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop A1地址
nop
nop

A1:push ebp
mov ebp,esp
jo 原入口
jno 原入口


【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz
黑吧代码 + 汇编代码:
使用黑吧粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp 原入口地址 '执行到程序的原有OEP

retn 0C


发布几个不常见的花指令

B1 01 mov cl,1
2C 90 sub al,90
95 xchg eax,ebp
4D dec ebp
65:42 inc edx
40 inc eax
20C4 and ah,al
8350 06 6E adc dword ptr ds:[eax+6],6E
226A E4 and ch,byte ptr ds:[edx-1C]
E8 B15FBC5B call 入口点

55 push ebp
8BEC mov ebp,esp
51 push ecx
53 push ebx
8BD8 mov ebx,eax
8BC3 mov eax,ebx
04 9F add al,9F
2C 1A sub al,1A
73 03 jnb 入口点

JMP SHORT test.00414FB5 (EB 01)
NOP
JMP SHORT test.00414FB8 (EB 01)
NOP
JMP SHORT test.00414FBB (EB 01)
NOP
JMP test. (EB 01)

90=c4

PUSH EBP
MOVE EBP,ESP
inc ecx
push eax
pop eax
push edx
pop edx
dec ecx
sub eax,-2
ADD ESP,68
DEC eax
DEC eax
SUB ESP,68
JPE 入口
JPO 入口

  1. NOP:这个指令代表“无操作”,通常被用作占位符或在程序中创建延迟。

  2. LEA:这个指令代表“加载有效地址”,将某个值的地址加载到一个寄存器中,而不是加载这个值本身。

TEB

(Thread Environment Block,线程环境块)

偏移

000

004

008

00C

010

014

018

020

024

02C

030
说明

指向SEH链指针

线程堆栈顶部

线程堆栈底部

SubSystemTib

FiberData

ArbitraryUserPointer

FS段寄存器在内存中的镜像

进程PID

线程ID

指向线程局部存储指针

PEB结构地址(进程结构)
034 上个错误号

异常处理的优先级

  1. VEH 向量化异常处理 VectoredExceptionHandler
  2. SEH 结构化异常处理
  3. UEF UnhandledExceptionFilter
  4. VCH VectoredContinueHandler

https://www.cnblogs.com/yilang/p/11850734.html