Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π—Π°Ρ‰ΠΈΡ‚ΠΈ свой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π° 100% ΠΎΡ‚ вирусов ΠΈ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 34

Автор ОлСг Π‘ΠΎΠΉΡ†Π΅Π²

TPPpack, TrueEP, Unopix, UPX, VB AntiCrack, VMProtect, WinUpack, yoda Crypter, yoda Protector, [G!X]s Protector.

ΠšΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ этот список, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ большим – Π° вСдь это всСго лишь дСсятая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя примСняСтся.

ΠžΡ‡Π΅Π½ΡŒ часто, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ антивирус ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ± Ρ‚ΠΎΡ‚ Π½Π΅ смог Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΊΠΎΠ΄, вирус Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° PEiD, основной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ ΠΎΠ± этом Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄. "ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ" этого Ρ€Π°Π·Π΄Π΅Π»Π°.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ прСдставляСт собой ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ вируса Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ процСсс своСго обнаруТСния ΠΏΡƒΡ‚Π΅ΠΌ сигнатурного сканирования ΠΈ частично эвристики.

Особо слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΈ сама ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ ΠΌΡƒΡ‚Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ постоянной. Вакая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° измСнСния вируса видоизмСняСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π·Π°Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

На самом Π΄Π΅Π»Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ написанного ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ вируса срСдствами ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ сигнатурного сканирования Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ с появлСниСм ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… антивирусных ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… появились ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ обнаруТСния: эвристика ΠΈ эмуляторы ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ извСстный ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ вирус 1260 Π±Ρ‹Π» написан ΠœΠ°Ρ€ΠΊΠΎΠΌ Π’Π°ΡˆΠ±Π΅Ρ€Π½ΠΎΠΌ (Mark Washburn) ΡƒΠΆΠ΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 1990 Π³ΠΎΠ΄Ρƒ.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, самый простой способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ±Π°ΠΉΡ‚Π½ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ вируса ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ XOR (листинг 5.3).

Листинг 5.3. ΠŸΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ – ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

mov cx, code_length

mov si, offset begin_code

mov al, xor_key

_loop:

xor [si+cx], al Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π±Π°ΠΉΡ‚

loop _loop ;Π±Π΅Ρ€Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°ΠΉΡ‚

jmp si

;...

;...

begin_code:

;Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° вируса – здСсь!

;ΠΎΠ½Π° отвСтствСнна Π·Π° Π·Π°Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

;ΠΈ созданиС Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° умСстно привСсти описаниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ вируса (www.virusList.com).

Virus.Win32.Zombie – слоТный ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ вирус, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ встраивания Π² Ρ„Π°ΠΉΠ»Ρ‹: вирус "Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚" (дизассСмбли-Ρ€ΡƒΠ΅Ρ‚) PE EXE-Ρ„Π°ΠΉΠ» Π½Π° составныС части, встраиваСт свой ΠΊΠΎΠ΄ ΠΈ собираСт Π·Π°Π½ΠΎΠ²ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Ρ ΠΏΡ€ΠΈ этом свой ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄ Π·Π°Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Virus.Win32.Zombie ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ дСкриптования своСго Ρ‚Π΅Π»Π° для ΠΎΠ±Ρ…ΠΎΠ΄Π° эвристичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ (ΠΎΡ‚ Π»Π°Ρ‚. obfuscare – Β«Π·Π°Ρ‚Π΅Π½ΡΡ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌΠ½ΡΡ‚ΡŒΒ») – Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, направлСнная Π½Π° Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ исходного тСкста ΠΈΠ»ΠΈ исполняСмого ΠΊΠΎΠ΄Π° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ, Π½ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π°Π½Π°Π»ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного тСкста ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ассСмблСрного тСкста. Π’Π°ΠΊ, созданиС Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ассСмблСрного тСкста ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнуто ΠΏΡƒΡ‚Π΅ΠΌ использования спСциализированных компиляторов. Π’Π°ΠΊΠΈΠ΅ компиляторы, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ возмоТности срСды выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Для создания "Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ³ΠΎ" ΠΊΠΎΠ΄Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ спСциализированныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡβ€“ обфускаторы.

Π’ контСкстС сокрытия вирусного ΠΊΠΎΠ΄Π° ΡΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ логичСских связСй, дСлая ΠΊΠΎΠ΄ максимально Π½Π΅ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹ΠΌ антивирусным ПО (листинги 5.4, 5.5).

Листинг 5.4. НСкоторыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ обфускации ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 1

int COUNT = 100;

float TAX_RATE = 0.2;

for (int i=0; i<COUNT; i++)

{

tax[i] = orig_price[i] * TAX_RATE; price[i] = orig_price[i] + tax[i];

}

Код послС обфускации:

for(int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a];}

Листинг 5.5. НСкоторыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ обфускации ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β„– 2 (Perl)

my $filter;

if (@pod) {

my ($buffd, $buffer) = File::Temp::tempfile(UNLINK => 1);

print $buffd "";

print $buffd @pod or die "";

print $buffd

close $buffd or die "";

@found = $buffer;

$filter = 1;

}

exit;

sub is_tainted {

my $arg = shift;

my $nada = substr($arg, 0, 0); # zero-length

local [email protected]; # preserve caller's version

eval { eval "#" }; return length( [email protected]) != 0;

}

sub am_taint_checking {

my($k,$v) = each %ENV;

return is_tainted($v);

}

ПослС обфускации:

sub z109276e1f2 { ( my $z4fe8df46b1 = shift ( @_ ) ) ; ( my

$zf6f94df7a7 = substr ( $z4fe8df46b1 ,

(0x1eb9+ 765-0x21b6) , (0x0849+ 1465-0x0e02) ) ) ; local [email protected] ;

eval { eval ( (

"" ) ) ; } ; return ( ( length ( [email protected] ) != (0x26d2+ 59-0x270d) ) )

; } my ( $z9e5935eea4 ) ; if ( @z6a703c020a ) { ( my (

$z5a5fa8125d , $zcc158ad3e0 ) =

File::Temp::tempfile ( "" , (0x196a+ 130-0x19eb) ) ) ; print (

$z5a5fa8125d "" ) ; ( print ( $z5a5fa8125d @z6a703c020a

) or die ( ( ( ( "" . $zcc158ad3e0 ) . "\x3a\x20" ) . $! ) ) ) ;

print ( $z5a5fa8125d "" ) ; ( close ( $z5a5fa8125d ) or die ( ( (

( "" ) ) ) ; ( @z8374cc586e = $zcc158ad3e0 ) ; ( $z9e5935eea4 =

(0x1209+ 1039-0x1617) ) ; } exit ; sub z021c43d5f3 { ( my (

$z0f1649f7b5 , $z9e1f91fa38 ) = each ( %ENV ) ) ; return (

z109276e1f2 ( $z9e1f91fa38 ) ) ; }

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° обфускации Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ ΠΊΠΎΠ΄Π° Π² Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ (Π½ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅) состояниС.

Π’Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ – ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ высокоуровнСвой обфускации "ΠΌΠΈΡ€Π½ΠΎΠ³ΠΎ назначСния". Если ΠΆΠ΅ Π΅Π΅ ΡΠΊΡΡ‚Ρ€Π°ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° вирусный ΠΊΠΎΠ΄, Ρ‚ΠΎ измСнится Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΠ΅: Ρ€Π°Π·Π²Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ маскировкС вирусного ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΎΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡŽ (с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ассСмблСра), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для автоматичСской обфускации, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Afx!AVSpoffer, EPProt ΠΈ PETools.

ВСхнология обфускации ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

♦ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, экспорта ΠΈ пСрСадрСсации;

♦ маскировка ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Entry Point (Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ);

♦ использованиС ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° распаковки.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ рассмотрСниС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² сокрытия ΠΈ рассмотрим особСнности Ρ€ΡƒΡ‚ΠΊΠΈΡ‚-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π ΡƒΡ‚ΠΊΠΈΡ‚-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’Π΅Ρ€ΠΌΠΈΠ½ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ (ΠΎΡ‚ Π°Π½Π³Π». root kit – Β«Π½Π°Π±ΠΎΡ€ для получСния ΠΏΡ€Π°Π² администратора») Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для скрытого взятия ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ систСмы.

Π’ контСкстС сокрытия вирусного ΠΊΠΎΠ΄Π° Π² систСмС Windows ΠΏΠΎΠ΄ rootkit принято ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½Π½Ρ‹ΠΌ Π² систСму, способСн ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Windows API). НСтрудно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΈ модификация API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€ΡƒΡ‚ΠΊΠΈΡ‚Ρƒ Π»Π΅Π³ΠΊΠΎ ΠΈ просто Π·Π°ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС присутствиС Π²ΠΎ Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ систСмС.

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ всС rootkit-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ сокрытия ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

♦ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (user-mode);

♦ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра (kernel-mode).

User-mode-катСгория Ρ€ΡƒΡ‚ΠΊΠΈΡ‚ΠΎΠ² основана Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, kernel-mode – Π½Π° установкС Π² систСму Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ уровня ядра.

Π’ настоящСС врСмя ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (user mode):

♦ модификация Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°;

♦ модификация машинного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

♦ модификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

♦ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ LoadLibrary ΠΈ GetProcAddress.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΈΠΌΠ΅Π½Π½ΠΎ эта ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° сокрытия ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Π·Π²Π°Π½ΠΈΠ΅ классичСской. ВСхнология Ρ‚Π°ΠΊΠΎΠΉ маскировки Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: rootkit Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² памяти Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° исполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ адрСса ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° адрСса своих ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ всС достаточно просто.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считываСт Π΅Π΅ адрСс ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΏΠΎ этому адрСсу ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. Поиск Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² памяти нСслоТСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для этого ΡƒΠΆΠ΅ извСстны спСциализированныС API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² памяти.

Данная ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° достаточно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½Π° проста Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ сущСствСнный нСдостаток – ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСски ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ машинного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как слСдуСт ΠΈΠ· названия, ΡΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ машинного ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π° Π²Ρ‹Π·ΠΎΠ² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. РСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ достаточно слоТна, обусловлСно это Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΌ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ языков программирования ΠΈ вСрсий компиляторов, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΈ сама рСализация Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ rootkit Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΉΡ‚ΠΈ Π² памяти ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ΠŸΡ€ΠΈ этом Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ минимально. Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π΄Π²Π΅-Ρ‚Ρ€ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΡƒ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ условиСм Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ являСтся сохранСниС исходного машинного ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ LoadLibrary ΠΈ GetProcAddress. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‡Π°Ρ‰Π΅ всСго выполняСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°: Ссли ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetProcAddress, Ρ‚ΠΎ ΠΏΡ€ΠΈ запросС адрСса ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ адрСса ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° адрСса своих ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ GetProcAddress ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ адрСс ΠΈ выполняСт Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра (kernel mode). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ взаимодСйствия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ user-mode ΠΈ kernel-mode.

ВзаимодСйствиС с ядром осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ntdll.dll, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ посрСдниками ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ядру Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ INT 2Eh. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ функциям ядра основано Π½Π° структурС KeServiceDescrip-torTable (ΠΈΠ»ΠΈ сокращСнно SDT), располоТСнной Π² ntoskrnl.exe. SDT, β€“ это Ρ‚Π°Π±Π»ΠΈΡ†Π°, содСрТащая адрСса Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π° сСрвисов ядра NT.