Log in

View Full Version : AntiUnpacking Tricks of Malware


Kayaker
May 16th, 2010, 00:13
AntiRE en Masse
Investigating Ferrie’s Documented AntiUnpacking Tricks in the World’s Worst Mal‐Families

http://www.virusbtn.com/pdf/conference_slides/2009/Baumgartner-VB2009.pdf

You remember Peter Ferrie’s AntiUnpacking Tricks 7-part series don't you? (actually, I see there's a part 8 now, hopefully made public soon)

http://pferrie.tripod.com/

rendari
May 20th, 2010, 23:30
Peter's articles are a must read for anyone involved in unpacking. Absolutely love them.

Indy
May 21st, 2010, 07:26
Quote:
•Int 0x2e calls with invalid eax/edx parameters

Simple old ways. In addition the author fails to understand the mechanisms that are described.
Recently discussed the most effective way of anti-debugging:
Code:
; +
; Сохранение контекста.
; o Eax: ID NtUserEnumDisplayMonitors.
; o Esi: адрес возврата.
; o Edi: ссылка на стек.
;
TsSave proc C
xor ecx,ecx
push esp ; Параметр для калбэка - ссылка на стек для его восстановления.
Call @f ; Ссылка на калбэк.
; Калбэк.
; typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM);
mov esp,dword ptr [esp + 4*4] ; Восстанавливаем стек, ссылка для восстановления передаётся параметром.
xor eax,eax
retn
@@:
push ecx
push ecx
mov edx,esp
; BOOL
; NtUserEnumDisplayMonitors(
; IN HDC hdc,
; IN LPCRECT lprcClip,
; IN MONITORENUMPROC lpfnEnum,
; IN LPARAM dwData)
Int 2EH ; NtUserEnumDisplayMonitors
; При восстановлении контекста возвращается не ноль.
.if !Eax ; Калбэк не был вызван изза исчерпания лимита вызовов/вложенности(0x2C).
add esp,4*4 ; Удаляем параметры сервиса.
retn
.else
mov esp,edi
add eax,3*4 ; Ссылка на стек, который был при вызове TsLoad(для передачи параметров.
jmp esi
.endif
TsSave endp

; +
; Восстановление контекста.
;
TsLoad proc C ; stdcall
xor eax,eax
mov edx,3*4
push eax
push eax
push esp
mov ecx,esp
Int 2BH
add esp,3*4
retn ; В случае ошибки возвратит STATUS_NO_CALLBACK_ACTIVE.
TsLoad endp

http://wasm.ru/forum/viewtopic.php?id=37300 ("http://wasm.ru/forum/viewtopic.php?id=37300")
http://indy-vx.narod.ru/Temp/kicb.zip
It is not possible to debug without kernel debugger

evaluator
May 22nd, 2010, 15:16
some fun.. after assembling given code, NOD quarantined it: " - a variant of Win32/Kryptik.APB trojan"

PS. on what Win version it works?

Indy
May 23rd, 2010, 03:07
Quote:
PS. on what Win version it works?

Should work across the range of x86 NT.

Kayaker
June 2nd, 2010, 16:27
Quote:
[Originally Posted by Kayaker;86536]You remember Peter Ferrie’s AntiUnpacking Tricks 7-part series don't you? (actually, I see there's a part 8 now, hopefully made public soon)


ANTI-UNPACKER TRICKS – PART EIGHT
http://pferrie2.tripod.com/papers/unpackers31.pdf