Введение в реверс-инжиниринг вредоносного ПО - Сергей...

22
Сергей Харюк aka ximera Introduction into malware analysis

Transcript of Введение в реверс-инжиниринг вредоносного ПО - Сергей...

Page 1: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Сергей Харюк aka ximera

Introduction into malware analysis

Page 2: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

О себе

Администратор форума reve r se4you .o rg

Вирусный аналитик в Z i l l ya !

Капитан CTF -команды R0 -C rew

Page 3: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Что такое вирусный анализ

Page 4: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Этапы анализа

С т а т и ч е с к и й а н а л и з

Б а з о в ы й

Уг л у бл е н н ы й

Д и н а м и ч е с к и й а н а л и з

С о з д а н и е с и г н а т у р

Page 5: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Базовый статический анализ

О п р е д е л е н и е т и п а ф а й л а

О п р е д е л е н и е к о м п и л я т о р а / л и н к е р а

О п р е д е л е н и е з а щ и т ы н а ф а й л е

А н а л и з с л у ж е б н о й и н ф о р м а ц и и ( з а г о л о в к и , с е к ц и и )

А н а л и з т а бл и ц ы и м п о р т а / э к с п о р т а

П о и с к и а н а л и з с т р о к

Page 6: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Инструменты базового анализа

D e t e c t i t E a s y

P E S t u d i o

P E To o l s

C F F E x p l o r e r

Page 7: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Углубленный статический анализ

А н а л и з и с п о л н я е м о г о к о д а в д и з а с с е м бл е р е / д е к о м п и л я т о р е

П о и с к з а щ и т н ы х м е х а н и з м о в ( а н т и в м / а н т и э м у л ь / ш и ф р о в а н и е к о д а )

П о и с к в р е д о н о с н о г о к о д а

О п р е д е л е н и е а л г о р и т м а р а б о т ы

Page 8: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Инструменты углубленного статического анализа

I D A

r a d a r e 2

. N e t R e f l e c t o r

I D R

Page 9: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Расшифровк а блок а данных.text:00401526 mov edi, dword_40504C ; помещаем в EDI размер расшифровываемого блока

.text:0040152C mov esi, off_405050 ; помещаем в ESI адрес начала блока расшифроки

.text:00401532 xor ecx, ecx ; обнуляем счетки

.text:00401534 test edi, edi ; если EDI == 0

.text:00401536 jle short loc_40154E ; выходим из цикла

.text:00401538 loc_401538: ; CODE XREF: .text:0040154Cj

.text:00401538 mov eax, ecx ; помещаем в eax значение счетчика

.text:0040153A push 14h ; помещаем в стек значение 20

.text:0040153C cdq ; заполняем EDX значением старшего байта регистра EAX

.text:0040153D pop ebx ; извлекаем из стека значение 20 в EBX

.text:0040153E idiv ebx ; помещаем в EBX результат EBX%EAX

.text:00401540 mov al, [edx+405038h] ; извлекаем в AL ключ расшифровки

.text:00401546 xor [ecx+esi], al ; расшифровываем байт

.text:00401549 inc ecx ; увеличиваем счетчик

.text:0040154A cmp ecx, edi ; если счетчик меньше размера блока

.text:0040154C jl short loc_401538 ; продолжаем цикл

Page 10: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Тот же алгоритм на Python

def xor_decrypt_key_array(effective_address, keys, size):

counter = 0

key_counter = 0

while counter < size :

key_counter = counter % 20

patchbyte( effective_address + counter,

byte( effective_address + counter ) ^ keys [ key_counter ] )

counter += 1

Page 11: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

.text:00401511 call sub_4018A6

.text:00401516 nop

.text:00401517 nop

.text:00401518 nop

.text:00401519 nop

.text:0040151A call sub_4018CC

.text:00401511 call sub_4018A6

.text:00401516 adc edx, [ebx]

.text:00401518 adc edx, [ebx]

.text:0040151A call sub_4018CC

Примеры зашифрованных участков кода

З а ш и ф р о в а н н ы й к о д О р и г и н а л ь н ы й к о д

Page 12: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Динамический анализ

И с с л е д о в а н и е в п е с о ч н и ц е

А н а л и з ф а й л о в о й с и с т е м ы

А н а л и з р е е с т р а

А н а л и з с е т е в о г о т р а ф и к а

И с с л е д о в а н и е п о д о т л а д ч и к о м

П о ш а г о в о е и с п о л н е н и е

И з у ч е н и е п р о и с х о д я щ е г о

Page 13: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Рабочий день вирусного аналитик а

Page 14: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Инструменты динамического анализа П е с о ч н и ц ы ( S a n d b o x e s )

c u c k o o ( m a l w r . c o m )

A n u b i s

H a r d w a r e s a n d b o x e s

В н у т р е н н и е р а з р а б о т к и

О т л а д ч и к и

O l l y D b g

X 6 4 d b g

W i n D b g

Page 15: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Создание сигнатур

П о и с к и о п и с а н и е з а к о н о м е р н о с т е й

П р о в е р к а в ы я в л е н н ы х з а к о н о м е р н о с т е й

П о и с к д о п о л н и т е л ь н ы х ф а к т о р о в

Page 16: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Инструменты для поиск а сигнатур

0 1 0 E d i t o r

W i n H e x

В н у т р е н н и е р а з р а б о т к и

Page 17: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Привет для Бацьки

D e l p h i - t h e b e s t . F u c k o f f a l l t h e r e s t . N e s h t a 1 . 0 M a d e i n B e l a r u s .

П р ы в i т а н н е у с i м ц i к а в ы м б е л а р у с _ к i м д з я у ч а т а м . А л я к с а н д р Р ы г о р а в i ч , в а м т а к с а м а : )

В о с е н ь - к е п с к а я п а р а . . . А л i в а р ы я - л е п ш а е п i в а ! B e s t r e g a r d s 2 To m m y S a l o . [ N o v - 2 0 0 5 ] y o u r s [ D z i a d u l j a A p a n a s ]

Page 18: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Литература для изучения

R E f o r b e g i n n e r s - h t t p : / / b e g i n n e r s . r e/

P r a c t i c a l M a l w a r e A n a l y s i s - h t t p : / / g o o . g l / W w R X m S

M a l w a r e A n a l y s t ' s C o o k b o o k - h t t p : / /g o o . g l / t q 5 3 n r

T h e I D A P r o B o o k - h t t p : / /g o o . g l / M P 4 5 m H

P r a c t i c a l R e v e r s e E n g i n e e r i n g - h t t p: / /g o o . g l / B i 7 r l S

S e c r e t s o f R e v e r s e E n g i n e e r i n g - h t t p : / /g o o . g l / Z K r m 7 a

G r a y H a t P y t h o n - h t t p s : / /g o o . g l / e c 5 z v n

R o o t k i t s a n d B o o t k i t s - h t t p s : / /g o o . g l / S U c L m m

Page 19: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Ресурсы для изучения R 0 - C r e w - > Б и бл и о т е к a - h t t p s : / /

g o o . g l / F W 2 V C d

h t t p: / / w w w. o p e n s e c u r i t y t r a i n i n g . i n f o/

w a s m . r u

e x e l a b . r u

A w e s o m e M a l w a r e A n a l y s i s - h t t p s : / /g o o . g l / i L j H t T

Page 20: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Вопросы

Page 21: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

КонтактыS o c i a l :

t w i t t e r . c o m / x i m e r u s

f b . c o m / x i m e r u s

l i n k e d i n . c o m / x i m e r u s

J a b b e r / e - m a i l :

x i m e r a @ r e v e r s e 4 y o u . o r g

S i t e :

r e v e r s e 4 y o u . o r g

Page 22: Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк

Спасибо за внимание