Как найти флаг в тексте

Темы, которые НЕ подходят по объему под префикс “Статья”

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

game.codeby.school

CTF-площадка Codeby Game

Площадка для специалистов в сфере информационной безопасности и программистов, которая содержит задания по кибербезопасности на захват флага (CTF)

game.codeby.school


game.codeby.school

Предыдущие мной написаны мной можно найти здесь, здесь и здесь
Переходим на

Ссылка скрыта от гостей

от нас требуется The password for the next level is stored in a hidden file in the inhere directory. Если на русском, нужный нам флаг хранится в скрытом файле в домашней директории inhere.
На сайте присутствует подсказка в виде команд, которые вам могут понадобиться для решения этой задачи ls, cd, cat, file, du, find

Запускаем ssh bandit.labs.overthewire.org port 2220
Логин bandit3 пароль флаг из level2

1.png

Мы на сервере, пишем команду для просмотра содержимого директории ls

1.jpg

Вводим команду pwdдля понимания директории где мы находимся
/home/bandit3

2.jpg

Наша задача перейти в директорию inhereпишем команду
cd /home/bandit3/inhere/

3.jpg

Нам по прежнему требуется найти скрытый файл пишем команду
ls -a
Необходимый нам скрытый файл имеет имя .hidden

4.jpg

Для его открытия используем команду cat .hidden

5.jpg

Отлично нам удалось найти флаг для прохождения level4 и подключения к bandit4​

До новых встреч!​

Logas

Logas

Дон кихот

Дон кихот

  • guest-1675977874
  • 29.12.2022
  • CTF Zone

GoBL1n

Mark Klintov

Mark Klintov

Рассказ об опыте участия в CTF (Capture The Flag – захват флага), которым поделилась аналитик информационной безопасности из компании Principal Financial Group.

Я посетила BSides Iowa, небольшую конференцию по безопасности, которая проходила в Де-Мойне, и участвовала в своем первом Capture the Flag как профессионал. До того, как вы начнете думать о больших площадках на открытом воздухе и физической нагрузке, соревнования Capture the Flag – это игры для специалистов по нарушению безопасности, которых большинство бы назвало хакерами (красная команда) и профессионалов в области информационной безопасности (синяя команда), а также всех остальных. Во время CTF игроки соревнуются друг с другом, решая задачи на своих компьютерах.

Существуют различные типы соревнований CTF, защитный стиль игры – это игровое поле и защита от атак (красная команда против синей) с активно атакующими и защищающими сетевую инфраструктуру игроками. Я сосредоточусь на защитном стиле CTF.

Как правило, этот стиль CTF делится на подкатегории (они различаются в зависимости от того, кто ведет, но есть несколько констант, таких как криптография и анализ пакетов) и каждая подкатегория содержит набор задач, которые пользователь должен решить, чтобы найти флаг. Флаг обычно представляет собой строку текста, которую пользователь вводит в игровое поле, чтобы получить свои очки. Чем больше очков стоит задача, тем труднее ее решить.

7,5 часов, тарелка картошки, 2 ломтика пиццы и две таблетки аспирина, после чего я выключила свой компьютер, получив 3,250 очков и 6-е место. Я решила держаться категории, для которой у меня было достаточно навыков. Я закончила решение всех 7 задач по Network Forensics, 2 из 8 задач, связанных с Host Forensics, и 3 из 6 задач Crypto. Многие из этих задач я решила первой, либо была в первой тройке. Не так плохо для первого CTF.

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

Настоящее удовольствие от CTF вы получаете, когда используете реальные навыки и тактики, чтобы найти флаг, и они действительно помогают (вы что-то взламываете). CTF – это ваш шанс взломать что-то легально (поскольку несанкционированный взлом крайне незаконен, и вы, вероятно, попадете в тюрьму, если вас поймают). Давайте рассмотрим несколько задач, которые были на BSides Iowa SecDSM CTF

Crypto

Одной из наиболее интересных криптографических задач была проблема стеганографии. Стеганография – это скрытие секретного сообщения в другом файле (например, изображении). Это довольно распространенная задача, встречающаяся в соревнованиях CTF. В сети доступно множество инструментов для обнаружения сообщения, скрытого в файле изображения, а также инструментов для извлечения этих сообщений.

Стеганографическая задача

Эта картинка выглядит абсолютно обычной? Но если мы посмотрим на командную строку:



$ file Words-Have-Power.jpg 
Words-Have-Power.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, progressive, precision 8, 849x578, frames 3

Ничего особенного… давайте попробуем hexdump:



$ hexdump -C Words-Have-Power.jpg

Оно возвращает кучу вывода, который я не буду вставлять сюда, но вот соответствующие биты:



0000a580  00 00 00 1e 00 00 00 08  00 00 00 66 6c 61 67 2e  |...........flag.|
0000a590  74 78 74 7d fa c9 4c 8f  fb d4 5e 8d 43 86 1f 63  |txt}..L...^.C..c|
0000a5a0  f9 f5 dd 12 d0 9d c7 e1  1d 50 5b 26 a5 32 7e ad  |.........P[&.2~.|
0000a5b0  94 04 3e a1 27 3b d4 e5  7f a4 f6 45 43 50 4b 01  |..>.';.....ECPK.|
0000a5c0  02 3f 03 14 03 01 00 00  00 bc 0c 94 4a 21 ff 41  |.?..........J!.A|
0000a5d0  1a 2a 00 00 00 1e 00 00  00 08 00 24 00 00 00 00  |.*.........$....|
0000a5e0  00 00 00 20 80 a4 81 00  00 00 00 66 6c 61 67 2e  |... .......flag.|
0000a5f0  74 78 74 0a 00 20 00 00  00 00 00 01 00 18 00 80  |txt.. ..........|
0000a600  63 53 a4 a0 b9 d2 01 80  70 f5 17 a1 b9 d2 01 80  |cS......p.......|
0000a610  63 53 a4 a0 b9 d2 01 50  4b 05 06 00 00 00 00 01  |cS.....PK.......|
0000a620  00 01 00 5a 00 00 00 50  00 00 00 00 00           |...Z...P.....|

Теперь мы знаем, что флаг находится в текстовом файле и по последней строке мы можем сказать, что в jpg есть скрытый файл.
Если мы попытаемся распаковать его:



	$ unzip Words-Have-Power.jpg
Archive:  Words-Have-Power.jpg
warning [Words-Have-Power.jpg]:  42349 extra bytes at beginning or within zipfile
  (attempting to process anyway)
[Words-Have-Power.jpg] flag.txt password: 

Теперь у нас есть подсказка для пароля. Если мы попробуем использовать «wordshavepower» (слова на изображении):



	$ unzip Words-Have-Power.jpg
Archive:  Words-Have-Power.jpg
warning [Words-Have-Power.jpg]:  42349 extra bytes at beginning or within zipfile
  (attempting to process anyway)
[Words-Have-Power.jpg] flag.txt password: 
 extracting: flag.txt 

Потрясающе! Давайте посмотрим с чем этот файл:



	$ cat flag.txt 
flag{not_stego_not_even_once}

Cipher Challenge

Еще одна из задач – челлендж по шифрованию для декодирования:


pcyv {mvac_flt_bg_kdzja_xoksvp_iaof_u4}

Сперва, я подумала, что это может быть шифр Цезаря, но нет. Следующий самый популярный шифр – это шифр Виженера. Гуглим и:

Другие задачи в этой категории требовали перевода из двоичной системы, Base64, Base32 или Base16 в ascii или дешифрирования файла, зашифрованного с помощью AES.

Host Forensics

Для решения задач, нужно было, чтобы игрок загрузил дамп MS Host и проанализировал его, а затем узнал имя запущенного вредоносного ПО и адрес, и порт C2 (Command & Control).

Эта конкретная категория была самой близкой мне. Я никогда не занималась экспертизой на компьютере под управлением Windows, но Google – друг каждого. Я обнаружила, что могу использовать инструмент командной строки, называемый Volatility, для анализа дампа и поиска флагов.

После загрузки файла я запустила команду file, чтобы лучше понять то, что я искала, потому что, если вы попытаетесь просто cat файл, вы получите кучу мусора.


	
$ file memory.dmp
memory.dmp: MS Windows 64bit crash dump, full dump, 2097152 pages

Я никогда не работала с аварийной дамп, но поиск в Google привел меня к Volatility и командам, которые мне нужно было запускать. (еще я нашла запись с другого CTF с похожим заданием).

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

Я заметила, что серверу был предоставлен странный внешний IP-адрес с несколькими исходящими соединениями. Я отфильтровала этот IP и начала искать подключения к нестандартному порту (в этом случае не к порту 80 или 433, потому что это веб-порты и обычно не используются для управления бот-сетью).


	
$ volatility -f memory.dmp --profile=Win7SP1x64 netscan | grep 10.0.10.103
Volatility Foundation Volatility Framework 2.5
0x23d43aec0        UDPv4    10.0.10.103:138                *:*                                   4        System         2017-04-21 19:18:49 UTC+0000
0x23d472ec0        UDPv4    10.0.10.103:137                *:*                                   4        System         2017-04-21 19:18:49 UTC+0000
0x23da11b40        UDPv4    10.0.10.103:1900               *:*                                   2292     svchost.exe    2017-04-21 19:20:47 UTC+0000
0x23f434690        UDPv4    10.0.10.103:68                 *:*                                   904      svchost.exe    2017-04-21 19:35:12 UTC+0000
0x23f21f880        TCPv4    10.0.10.103:49662              174.127.99.252:4576  CLOSED           -1                      
0x23f471010        TCPv4    10.0.10.103:49682              98.139.199.205:443   CLOSED           -1                      
0x23fdbe3b0        TCPv4    10.0.10.103:139                0.0.0.0:0            LISTENING        4        System         
0x23f91c010        TCPv4    10.0.10.103:49665              165.254.114.16:80    CLOSED           -1                      
0x23faa0cd0        TCPv4    10.0.10.103:49698              63.250.200.63:443    CLOSED           -1                      

Единственный вариант – 174.127.99.252:4576, и он оказался верным.
Следующей задачей было точно определить вредоносное ПО, заразившее систему. Я использовала strings для поиска по дампу и отфильтровала IP адреса для C2, потому что знала, что IP-адрес определенно привязан к вредоносному ПО.


	
$ strings -d memory.dmp | grep '174.127.99.252' | more -5
{"NETWORK":[{"PORT":4576,"DNS":"174.127.99.252"}],"INSTALL":true,"MODULE_PATH":"Ns/k/Erc.R","PLUGIN_FOLDER":"fDNTvmjCywD","JRE_FOLDER":"KRBDYF","JAR_FOLDER":"
HfItRcGAvMp","JAR_EXTENSION":"JFKuuO","ENCRYPT_KEY":"mZWoFgfReBJIoLFLZKsOOIaqn","DELAY_INSTALL":2,"NICKNAME":"User","VMWARE":true,"PLUGIN_EXTENSION":"TvEXt","
WEBSITE_PROJECT":"https://jrat.io","JAR_NAME":"kpjCTotwwxd","SECURITY":[{"REG":[{"VALUE":""SaveZoneInformation"=dword:00000001rn","KEY":"[HKEY_CURRENT_USE
R\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]"},{"VALUE":""LowRiskFileTypes"=".avi;.bat;.com;.cmd;.exe;.htm;.html;.lnk;.mpg;.mpeg
;.mov;.mp3;.msi;.m3u;.rar;.reg;.txt;.vbs;.wav;.zip;.jar;"rn","KEY":"[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Association

Из этого я поняла, что вредоносное ПО называется jrat.io и что это также флаг. Я начала работать в этой категории чуть позже в тот же день. Хотелось бы, чтобы у меня было больше времени, чтобы попытаться решить другие задачи, потому что я думаю, что смогла бы их решить. Две вышеперечисленные задачи стоили больше всего очков в категории Host Forensics.

Network Forensics

Эта категория, где я чувствовала себя как дома. Пакетный анализ – основная часть моей повседневной жизни. Задачи в этой категории были связаны с тремя основными темами: фишинг, вымогательство и heartbleed. Чтобы решить задачи в этой категории, игроку нужны: Wireshark и знание анализа пакетов и сетей.

Я покажу сложную задачу. Нам пришлось загрузить файл pcap и единственным словом в его описании было «сломан».

Heartbleed

Глядя на pcap в Wireshark, я знала, что это будет атака с heartbleed из-за запросов и ответов, похожих на сердечный ритм. Я посмотрела, как работает heartbleed, и мне стало понятно, где искать. (Посмотрите графическое объяснение, которое я нашла)

Если вы посмотрите heartbleed вывод и скопируете Payload как текст, то в итоге обнаружите:


	SC[r+H9
w3f
"!985
    32ED/A I
42
   
#ge: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Length: 28
Pragma: no-cache
Cache-Control: no-cache

bsides={heartbleed_for_life}kYV<V4

и bsides = {heartbleed_for_life} – это флаг.

Попробуйте

Если вы дошли до этого момента, и я не потеряла вас где-нибудь в дампе Microsoft, возможно, вам нужно поучаствовать в Capture the Flag. Существует много CTF для начинающих. Также есть много CTF, специально для веб-разработчиков. Знание способа защиты приложения от внешних угроз для разработчика – бесценно. Если вы заинтересованы этой темой, но не хотите соревноваться, ознакомьтесь с некоторыми из этих сайтов:

  • CTFLearn
  • HackThisSite
  • Список сайтов для практики
  • Инструменты и источники для подготовки к CTF от института Infosec

Интересны утилиты командной строки, которые я использовала?

  • cat
  • file
  • more
  • strings
  • unzip
  • Volatility

Я выполнила большинство задач на Ubuntu 16.04 Digital Ocean Droplet.
Если вам особенно интересна разработка веб-приложений, то предлагаю попробовать WebGoat. Я использовала его, чтобы продемонстрировать атаки SQL Injection для презентации группе студентов, и его было довольно легко настроить и использовать.

Другие стать по теме

6 книг, которые рассказывают об этичном хакинге

10 лучших инструментов для хакинга в 2017 году

В самом начале, когда только зарождалось понятие “хакер” люди связывали это слово с преступлениями и чем-то противозаконным. Сейчас же за любую дыру в системе компании готовы платить огромные деньги. Поиск уязвимостей стал сложнее, а компаний все больше. В пример можно привести площадку HackerOne. Но прежде чем на ней работать, потребуются определенные знания и тренировки. Где их искать? Все очень просто. Требуется всего лишь прохождение CTF. Что это такое и как с этим работать я расскажу в этой статье.

План работы

Перед этим давай я посвящу вас в наши планы. Расписывать много не стану. Весь план статьи вы можете увидеть ниже.

  1. Что такое CTF?
    1. Термин CTF и его описание
    2. Алгоритмы работы
  2. OSINT: Как правильно искать информацию
    1. Термин OSINT и его описание
    2. Цель разведки
    3. Немного Google Dorks
    4. Сайты для поиска информации
  3. Стеганография: Что скрывают от глаз пользователей?
    1. Термин Стеганография и его описание
    2. Работа с HEX редактором
    3. Учимся скрывать и находить информацию в картинке
    4. Работа с аудиофайлами
  4. Реверс-инженерия: Как работать с файлами
    1. Wireshark и перехват пакетов
    2. Пятиуровневый стек
    3. Работа с фильтрами и их операторами
    4. Коротко о видах анализа и программах

По плану я описал всю работу, которую нам предстоит провести, поэтому можем приступать к реализации.

Что такое CTF?

Начнем с того, что означает такое слово. Гугл трактует его так:

CTF (Capture The Flag, Захват флага) – соревнования по спортивному хакингу или командная игра, главной целью которой является захват «флага» у соперника. Участники делятся на команды и соревнуются в выполнении разнообразных задач. Их цели зависят от формата соревнования.

Слово “команда” пока что нас не касается, так как наша основная цель освоить базовые знания для решения CTF задач. В дальнейшем я заменю слово задача на таску (от английского слова task).

Итак, представим ситуацию. Тебе дали компьютер, точнее информацию о нем (IP адрес или логин/пароль к учетке) и сказали взломать. В реальных условиях такого рода таски встречаются достаточно часто. И чтобы со всем этим справиться я расписал алгоритм решения, который состоит из трех пунктов. По нему вам будет проще ориентировать и не будет ступора дальше.

  1. Гуглится все. Представим у нас есть код на Python и при его запуске выходит ошибка. Ранее такой не было и что делать в таком случае? Самое логичное решение это загуглить. Та же система работает и в решении CTF. Рекомендуется использовать англоязычные сайты, чтобы найти больше решений и ответов. 
  2. Подбор слов. Никто не сомневается в том, что интернет дает огромное количество решений на поставленные задачи. Но бывают исключения из правил, когда пользователь неправильно создает запрос. Допустим мы получили такую ошибку из нашей программы: UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x84 in position 0: invalid start byte. Прежде всего не нужно копировать и вставлять все, что указано. Требуется выделить главную информацию, а именно первое слово, которое говорит о том, какого характера идет ошибка. Таким образом, шансы на решения проблемы при правильном составлении запроса увеличиваются в несколько раз.
  3. Метод кубиков. Проще всего объяснить такое правило будет на достаточно простом примере. Каждый персональный компьютер обрабатывает огромный поток информации за несколько секунд. На языке ассемблер создаются запросы к оперативной памяти: чтение, запись и удаление. Таким образом, из таких простых действий мы видим картинку на экране нашего монитора. По аналогии с таким примером следует выполнять последовательное решение задач. Сначала сбор информации, потом ее анализ и реализация.

Итак, мы разобрались с тем, как правильно нужно работать с CTF, теперь стоит перейти к их видам, а точнее таскам, которые встретятся на вашем пути. Далее я опишу несколько главных аспектов для работы и продемонстрирую их возможности. Потренироваться в решении вы сможете на отдельных площадках.

OSINT: Как правильно искать информацию

Итак, прежде всего следует определится с тем, что такое OSINT. Так как основная аудитория этой статьи это начинающие игроки, то я постараюсь объяснять каждый новый и непонятный термин, начиная с этого.

OSINT (Open-Source Intelligence, разведка на основе открытых данных) — сбор информации о человеке или организации из открытых источников и ее последующий анализ.

Основной целью такой разведки становятся персональные данные. Любая информация, которая связана с человеком. Геолокация мест, фамилия, имя или отчество, а также дата рождения или имя домашнего питомца. Я думаю вы поняли о чем я говорю. Но чтобы найти все это порой мало одного лишь запроса в гугле. Так как алгоритмы поиска основаны на релевантности, то есть дают максимально близкие вам запросы. Поэтому мы не всегда получаем нужную нам информацию. Чтобы это исправить следует ограничить круг поиска при помощи операторов, специальных конструкций запросов. Ниже я создал небольшую таблицу с такими конструкциями.

Оператор

Описание

Пример

site 

ищет информацию на определенном сайте

site:codeby.net CTF Zone

link 

Страницы содержащие ссылку на сайт

link:codeby.net

cache

Позволяет увидеть актуальный кэш страницы

cache:codeby.net

related

Ищет сайты с похожим контентом

related:codeby.net

source

Выдает информацию из новостной ленты Google News

source:codeby.net

map

Ищет нужную информацию на картах

map:codeby.net

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

На примере социальной сети Telegram, мы можем найти канал Codeby, для этого воспользуемся шаблоном ссылок t.me. Финальный результат будет выглядеть следующим образом: https://t.me/codeby_sec. Но хочу заметить, что сработает такой поиск только в том случае если канал является открытым. Для пользователей это равноценно тому, что используется номер телефона для поиска или человек после регистрации еще не придумал юзернейм, который мы обычно видим в профиле после спецсимвола @

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

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

Если же дело касается сайта, что чаще всего встречается в CTF, то здесь мы можем воспользоваться таким понятием как WHOIS. Это сетевой протокол, который стоит рядом с TCP и используется для установки владельца домена и подробной информации о нем. Также в решении таск может помочь сервис Censys. С регистрацией может быть доступна демо-версия, но для старта этого достаточно. Для работы с DNS серверами прекрасно подходит DNS Dumpster с его функционалом и графическим представлением всей информации. Чтобы не терять важные ссылки следует обратится к онлайн фреймворку OSINT Framework. Там вы найдете множество полезной информации и никогда не останетесь у разбитого корыта.

Стеганография: Что скрывают от глаз пользователей?

У большинства людей при виде этого слова возникает ассоциация с картинкой в которой вшита какая-либо информация. Это самый примитивный пример реализации стеганографии. В Windows создать такое можно при помощи подручных средств. Некоторые таким образом скрывают свои тайны в обычных JPEG фотографиях. Только мы с тобой будет выжимать из таких изображений все содержимое. Перед этим ознакомимся с термином стеганография.

Цифровая стеганография – это направленное сокрытие каких-либо данных в цифровых объектах (картинках, видеофайлах или звуковых дорожках).

Теперь попробуем взять какое-либо изображения из интернета и просто поменяем ему формат. Допустим у меня есть исходный файл с названием cat.jpg. При открытии операционная система использует встроенные редакторы изображений. Если я поменяю формат файла с JPG на MP3 или тот же WAV откроется уже плеер и система сообщит о том, что файл поврежден и его невозможно прочитать. Хотя на самом деле если по прежнему открыть файл с таким форматом через редактор изображений никаких проблем не возникнет. Как это происходит?

Каждый файл состоит из определенной последовательности байт. Обычно такая последовательность представлена в шестнадцатеричной системе счисления. Простым языком все картинки имеют определенную структуру, по которой система их распознает. Чтобы найти эту структуру воспользуемся HEX редактором. Каким именно вы можете выбрать сами. Также скачаем любую картинку из гугла в формате JPG. Я для работы использую такую фотографию:

Фотография для работы

Откроем ее при помощи редактора и посмотрим на последовательность байтов. Все должно выглядеть примерно так:

Последовательность байтов в редакторе

Я выделил первые три байта в памяти поскольку для JPG формата они никогда не меняются. Справа у нас кот в шестнадцатеричной системе, а слева тот же кот но в кодировке ASCII. Именно поэтому вы видите набор смайликов и непонятных символов. Неизменную последовательность байтов (в нашем случаи это FF D8 FF) принято называть сигнатурой. С ней мы подробнее познакомимся в разделе реверса, а сейчас я могу сказать, что сигнатура это подобие вашей подписи, которую вы оставляете в документе и других деловых бумажках. Кроме одинакового конца файлы имеют и отдельный конец после которого программа не будет ничего читать. В рамках нашей работы я не стану объяснять как ручным способом найти склейку файлов, потому что сейчас существует огромное количество утилит заточенных под это. Предлагаю протестировать все в реальных условиях. Берем нашу картинку и перемещаем на рабочий стол. Склейку я проведу на Windows 10, а искать скрытые данные буду при помощи Linux. После перемещения создаем архив в формате RAR и помещаем туда то, что мы хотим спрятать от посторонних глаз. После этого тут же создаем файл в формате BAT и записываем в него следующие строки: copy /b название_картинки.jpg + название_архива.zip crack_me.jpg

Сохраняем результат и запускаем. В результате таких манипуляций мы получим файл с названием crack_me.jpg. Чтобы убедиться, что он имеет скрытую информацию делаем щелчек правой кнопкой мыши по файлу и выбираем пункт открыть с помощью WinRAR. Таким образом перед нами появится темная сторона нашего файла. Чтобы эти данные обнаружить и изъять мы воспользуемся утилитой binwalk. Плавно перетекаем из Windows в Linux и пробуем наши силы. Чтобы извлечь всю информацию в терминале требуется напечатать такую команду: binwalk -e crack_me.jpg. После этого вы увидите примерно такую картину:

Вывод команды binwalk

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

Папка со встроенными файлами

Также порой в изображениях можно найти геолокации. Обычно они прячутся в метаданных и достать их оттуда не составляет труда. Утилита exiv2 помогает просматривать всю информацию о изображениях, чтобы увидеть их требуется запустить программу с флагом -pa, а для комментариев используется -pc. Также вы можете столкнуться с таким понятием как сжатие. При помощи него тоже можно скрывать нужную информацию, в этом случае вас спасет программа stegsolve

Что касается аудиофайлов. Здесь все значительно проще. Вам не придется делать, что-либо вручную поскольку самые простые таски вы сможете решать при помощи редактора аудио Audacity. Для примера я взял еще одно фото и попытался скрыть его в аудио дорожке. Само изображение вы видите ниже.

Изображение для работы

Итак, в результате преобразования JPG картинки в формат WAV получился довольно непонятный звук. Я загрузил его в наш редактор. Далее вам требуется сделать по тише аудиофайл и включит режим спектрограммы. Таким образом получится результат. Если же изображения не появилось следует поэкспериментировать с частотой файла. Увеличивая или уменьшая ее вы добьетесь нужного результата. Еще порой встречаются таски на логику, где дается одна аудиодорожка и никакого изображения или текста в ней нету. Здесь стоит включать логику и вероятнее всего решение скрыто в громкости файла. Самый высокий тон можно принять за единицу, а самый низкий соответственно за ноль. Таким образом можно составить закодированный в двоичную систему текст и в дальнейшем при декодировании получить флаг.

Сигнатуры для всех известных и часто используемых файлов я предоставил ниже.

Расширение

Шестнадцатеричный вид

ASCII формат

JPG

ff d8 ff e0 00 10 4a 46 49 46 00 01

……JFIF..

PNG

89 50 4e 47 0d 0a 1a 0a 00 00 00 0d

.PNG……..

ZIP

450 4b 03 04 14 00 00 00 08 00 06 93

PK……….

MP3

49 44 33 03 00 00 00 0f 6d 4b 54 41

ID3…..mKTA

PDF

25 50 44 46 2d 31 2e 35 0a 25 d0 d4

%PDF-1.5.%..

EXE

4d 5a 90 00 03 00 00 00 04 00 00 00

MZ……….

GIF

47 49 46 38 39 61 96 00 53 00 87 00

GIF89a..S…

Итак, теперь пробежимся по итогам. В этом разделе для новичков больше преобладает умение использовать софт, чем знания. По сути основная цель это просканировать файл, доказать, что в нем, что-то есть и вытащить всю информацию при помощи подручных средств. Вручную вас никто не просит этого делать. Вы можете открыть файл в формате HEX, если в обычном режиме чтения система сообщает о повреждениях. С помощью 16-тиричной системе можно установить первоначальное расширение файла и поменять его обратно. Такого типа таски могут встречаться на вашем пути, их основная цель запутать игрока и вызвать панику при помощи крайне простой ошибки.

Реверс-инженерия: Как работать с файлами

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

Протокол – это набор правил, которые созданы для регулирования обмена данных между системами.

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

Также стоит помнить, что при общении мы придерживаемся определенных правил. К примеру, после приветствия у нас следует имя собеседника. Та же система применяется к интернет-протоколам. Только вместо имени используется конкретизация информации в заголовке пакета. Под этим словом понимается номер порта источника и приемника. Само же понятие порт пришло к нам для облегчения работы системы. Через них мы можем передавать больше информации чем обычно. К примеру по 21 порту мы можем скачать файл, а по 443 подключится к серверу и посмотреть что-либо. Еще стоит напомнить о таком термине как пакет. Если говорить коротко, то это файл с информацией который передается на другое устройство. Своеобразное подобие посылки, но достаточно необычной. В реальной жизни мы отправляет посылку целиком, а в интернете мы разбиваем ее на пакеты и отправляем по частям.

Также в работе интернета есть одно важное понятие уровней. Вся информация передается на определенных этапах. Чтобы не загружать мозг я коротко представил все в виде таблицы. По другому это все называется пятиуровневым стеком интернет-протоколов.

Что передается

Тип уровня

Между кем передается

Данные

Прикладной уровень

Между браузером и сервером

TCP/UDP заголовки

Транспортный уровень

Между операционными системами

IP/TCP/UDP заголовки

Сетевой уровень

Между маршрутизаторами

MAC/IP/TCP/UDP заголовки

Канальный уровень

Между сетевыми картами

Двоичный код

Физический уровень

Между кабелями

Для дальнейшей работы нам потребуется Wireshark. Я на примере своих вирусов покажу как перехватывать нужную информацию из пакета и правильно ее обрабатывать. Если вы являетесь внимательным читателем моих статей, то могли заметить, что такую работу я проводил в одной из своих статей.

В работе с перехватом трафика требуется владеть навыками поиска и обработки информации. Вы должны знать как правильно составлять запрос для фильтрации данных. а также знать, что нужно искать.

Чтобы продемонстрировать весь процесс работы я использовал стиллер Predator. Подробнее о его исследовании вы можете ознакомиться здесь. Приступим к разбору.

Первым делом запускаем нашу акулу. Перед вами высветится окно такого формата.

Сетевой анализатор Wireshark

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

Результаты перехвата

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

Окно с информацией, которую передавало устройство

В самом пакете стоит обратить внимания прежде всего на локацию, в нашем случаи это сайт, который устанавливает внешний IP машины. В CTF обычно он будет вести на другой сайт с зацепкой. Теперь попробуем применить собственные фильтры и отсеять все пакеты с флагом SYN. В них нет ничего интересного поскольку их основная цель это подготовка и завершение подключения с сервером. Для этого в верхней строке вводим такой текст: tcp.flags.syn==1

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

ip.dst == 192.168.10.10 && ip.src == 104.16.155.36

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

Теперь перед нашими глазами информация о подключении к серверу и размере передаваемого сообщения. Для просмотра такого добра переходим во вкладку следования и изучаем пакет. Если в условии таски вам дадут порт для подключения то потребуется применить такой фильтр: tcp.port == номер_порта.

Для более понятной ориентации ниже я составил таблицу со всеми операторами и их описанием.

Оператор

Описание

==

Присвоение, оно же равно

!=

Отрицание, не равно

<

Меньше

>

Больше

>=

Больше или равно

<=

Меньше или равно

&&

Логическая операция И, выполняются когда истины два условия

||

Логическая операция ИЛИ, выполняется когда истинно одно из условий

!()

Логическая операция НЕ, выполняется когда нет совпадений со значениями в скобках

Также я предоставил ниже аналогичную таблицу, но связанную с такими операторами как dst/src и тд.

Оператор

Описание

ip.addr

Выдает пакеты где заданный IP используется как источник или приемник

ip.src

Выдает пакеты где заданный IP используется как источник

ip.dst

Выдает пакеты где заданный IP используется как приемник

tcp.port

Выдает пакеты, источником или портом назначения которого является определенный порт

tcp.flags

Выдает пакеты, в которых присутствует определенный флаг

tcp.stream eq

Следует по потоку с определенным номером

tcp.seq

Фильтрует по номеру потока

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

Прежде всего вы должны понимать, что реверс подразделяется на 2 большие группы анализа.

  1. Статический анализ (он делится на: базовый, продвинутый)
  2. Динамический анализ (он делится на: базовый, продвинутый)

Разберемся с тем, в чем их отличие.

  • Статический анализ – он подразумевает анализ файла в обход его запуска. При помощи подручных утилит позволяет вытянуть таблицу импорта/экспорта, а также показывает строки и сигнатуры файла.
  • Динамический анализ – заставляет вас открывать файл и анализировать его поведения. Как раз работа, которую мы проводили в Wireshark становится частью динамического анализа PE-файла.

На этом уровне подготовки я не стану рассказывать о упаковщиках, крипторах и деобфускаторов, чтобы случайно не взорвать ваш мозг. Поэтому ниже я предоставил список, который поможет в анализе файла и поиска зацепок для решения CTF. В следующих статьях я более подробно расскажу об устройстве файла и его составе, а пока что рекомендую использовать такой набор тулкит:
Статический анализ: Detected It Easy, FileAlyzer, Import REConstructor, Explorer Suite.
Динамический анализ: dnSpy, dotPeek, ExtremeDump, ProcessExplorer. Regshot.

Теперь можно официально заявить, что посвящение в юные CTF-игроки завершено и можно переползать за черту завершения.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="utf-8">
    <title>Ez ez </title>
    <meta content="width=device-width, initial-scale=1.0" name="viewport">
    <meta content="" name="keywords">
    <meta content="" name="description">
 
    <!-- Favicons -->
    <link href="img/favicon.ico" rel="icon">
    <link href="img/favicon-32x32.png" rel="apple-touch-icon">
 
    <!-- Bootstrap CSS File -->
    <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
 
    <!-- Libraries CSS Files -->
    <link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet">
    <link href="lib/animate/animate.min.css" rel="stylesheet">
    <link href="lib/ionicons/css/ionicons.min.css" rel="stylesheet">
    <link href="lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
    <link href="lib/lightbox/css/lightbox.min.css" rel="stylesheet">
 
    <!-- Main Stylesheet File -->
    <link href="css/style.css" rel="stylesheet">
</head>
 
<body id="page-top">
 
    <!--/ Nav Star /-->
    <nav class="navbar navbar-b navbar-trans navbar-expand-md fixed-top" id="mainNav">
        <div class="container">
            <a class="navbar-brand js-scroll" href="#page-top">Ez brah</a>
            <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarDefault" aria-controls="navbarDefault" aria-expanded="false" aria-label="Toggle navigation">
        <span></span>
        <span></span>
        <span></span>
      </button>
            <div class="navbar-collapse collapse justify-content-end" id="navbarDefault">
                <ul class="navbar-nav">
                    <li class="nav-item">
                        <a class="nav-link js-scroll active" href="#home">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll" href="#about">About</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll" href="#service">Services</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll" href="#contact">Contact</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    <!--/ Nav End /-->
 
    <!--/ Intro Skew Star /-->
    <div id="home" class="intro route bg-image" style="background-image: url(data:image/jpeg;base64,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)">
        <div class="overlay-itro"></div>
        <div class="intro-content display-table">
            <div class="table-cell">
                <div class="container">
                    <!--<p class="display-6 color-d">Hello, world!</p>-->
                    <h1 class="intro-title mb-4">I am student</h1>
                    <p class="intro-subtitle"><span class="text-slider-items">Rick and Morty fan,Love Linux,Love beer,This is not flag,Pervak,{,T,h,i,s, ,i,s, ,n,o,t, ,f,l,a,g,!,}</span><strong class="text-slider"></strong></p>
                    <!-- <p class="pt-3"><a class="btn btn-primary btn js-scroll px-4" href="#about" role="button">Learn More</a></p> -->
                </div>
            </div>
        </div>
    </div>
    <!--/ Intro Skew End /-->
 
    <section id="about" class="about-mf sect-pt4 route">
        <div class="container">
            <div class="row">
                <div class="col-sm-12">
                    <div class="box-shadow-full">
                        <div class="row">
                            <div class="col-md-6">
                                <div class="row">
                                    <div class="col-sm-6 col-md-5">
                                        <div class="about-img">
                                            <img src="img/testimonial-2.jpg" class="img-fluid rounded b-shadow-a" alt="">
                                        </div>
                                    </div>
                                    <div class="col-sm-6 col-md-7">
                                        <div class="about-info">
                                            <p><span class="title-s">Name: </span> <span>aaveR lliriK</span></p>
                                            <p><span class="title-s">Profile: </span> <span>Hack you!</span></p>
                                            <p><span class="title-s">Telegram: </span> <span>@KirillRevaa</span></p>
                                            <p><span class="title-s">Phone: </span> <span>1337</span></p>
                                        </div>
                                    </div>
                                </div>
                                <div class="skill-mf">
                                    <p class="title-s">Skill</p>
                                    <span>Drink beer</span> <span class="pull-right">85%</span>
                                    <div class="progress">
                                        <div class="progress-bar" role="progressbar" style="width: 85%;" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                    <span>To get education</span> <span class="pull-right">85%</span>
                                    <div class="progress">
                                        <div class="progress-bar" role="progressbar" style="width: 85%" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                    <span>Admin</span> <span class="pull-right">10%</span>
                                    <div class="progress">
                                        <div class="progress-bar" role="progressbar" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                    <span>Smoke cigarettes</span> <span class="pull-right">90%</span>
                                    <div class="progress">
                                        <div class="progress-bar" role="progressbar" style="width: 90%" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100"></div>
                                    </div>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="about-me pt-4 pt-md-0">
                                    <div class="title-box-2">
                                        <h5 class="title-left">
                                            About me
                                        </h5>
                                    </div>
                                    <p class="lead">
                                        Did I really just forget that melody? Nah, da da dadadada nananana Alright, da da dadadada When I popped off than your girl gave me just a little bit of lockjaw Baby so cold he from the north, he from the Canada
                                    </p>
                                    <p class="lead">
                                        Bankroll so low, I got nothing else that I can withdraw Ran out the door I shine my wrist it go like chachasha, chashasha I got your bitch singing me lalala, lalala I shine my wrist it go like chachacha, chachacha I got your bitch singing that lalala,
                                        lalala How I stride like that? </p>
                                    <p class="lead">
                                        Amex, no cap, 800 score They wonder how, how I guap like that I rap my lyrics when I perform They wonder how, how I stride like that Married to the grind, I bought my ring I'm corny, but your girlie want that **** Modest with my jewels but check the bank
                                        Finally got that money say my thanks </p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
 
    <div class="section-counter paralax-mf bg-image" style="background-image: url(img/counters-bg.jpg)">
        <div class="overlay-mf"></div>
        <div class="container">
            <div class="row">
                <div class="col-sm-3 col-lg-3">
                    <div class="counter-box counter-box pt-4 pt-md-0">
                        <div class="counter-ico">
                            <span class="ico-circle"><i class="ion-checkmark-round"></i></span>
                        </div>
                        <div class="counter-num">
                            <p class="counter">450</p>
                            <span class="counter-text">SKIP COUPLES</span>
                        </div>
                    </div>
                </div>
                <div class="col-sm-3 col-lg-3">
                    <div class="counter-box pt-4 pt-md-0">
                        <div class="counter-ico">
                            <span class="ico-circle"><i class="ion-ios-calendar-outline"></i></span>
                        </div>
                        <div class="counter-num">
                            <p class="counter">15</p>
                            <span class="counter-text">EXAMS PASSED</span>
                        </div>
                    </div>
                </div>
                <div class="col-sm-3 col-lg-3">
                    <div class="counter-box pt-4 pt-md-0">
                        <div class="counter-ico">
                            <span class="ico-circle"><i class="ion-ios-people"></i></span>
                        </div>
                        <div class="counter-num">
                            <p class="counter">550</p>
                            <span class="counter-text">LITER OF BEER DRUNK</span>
                        </div>
                    </div>
                </div>
                <div class="col-sm-3 col-lg-3">
                    <div class="counter-box pt-4 pt-md-0">
                        <div class="counter-ico">
                            <span class="ico-circle"><i class="ion-ribbon-a"></i></span>
                        </div>
                        <div class="counter-num">
                            <p class="counter">36</p>
                            <span class="counter-text">TOLERANCES RECEIVED</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
    <div id="preloader"></div>
 
    <!-- JavaScript Libraries -->
    <script src="lib/jquery/jquery.min.js"></script>
    <script src="lib/jquery/jquery-migrate.min.js"></script>
    <script src="lib/popper/popper.min.js"></script>
    <script src="lib/bootstrap/js/bootstrap.min.js"></script>
    <script src="lib/easing/easing.min.js"></script>
    <script src="lib/counterup/jquery.waypoints.min.js"></script>
    <script src="lib/counterup/jquery.counterup.js"></script>
    <script src="lib/owlcarousel/owl.carousel.min.js"></script>
    <script src="lib/lightbox/js/lightbox.min.js"></script>
    <script src="lib/typed/typed.min.js"></script>
    <!-- Contact Form JavaScript File -->
    <script src="contactform/contactform.js"></script>
 
    <!-- Template Main Javascript File -->
    <script src="js/main.js"></script>
</body>
 
</html>

Что такое CTF?

Capture the flag, что на русском — захват флага. Всё очень просто. У тебя есть задание, в ходе которого
нужно найти флаг, являющийся обычной строкой вида flag{…}.

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

У меня нет навыков программирования и тем более нет умения что-либо взламывать

Не переживай, турнир рассчитан на новичков, которые только-только знакомятся с миром IT. Главная задача
этого турнира — заинтересовать тебя и показать, что в IT самом деле всё не очень сложно.

Как играть?

Перед тобой будет выбор из нескольких заданий. Выбирай любое, нажимай на кнопку “Подробнее” и попробуй его
выполнить.

Как найдёшь флаг, возвращайся на главную страницу, вставляй в соответствующее поле и нажимай на кнопку
“Сдать”.

Как понять, что я нашел(ла) флаг?

Флаг имеет вид строки текста flag{…}, такое точно не пропустишь мимо.

Для нас важнее всего содержимое флага, то есть то, что находится вместо многоточия. К примеру, если бы тебе
попался флаг flag{ya_super_hacker}, то ответом на задание являлось бы ya_super_hacker.

Важно! В некоторых заданиях не стоит искать флаг вида flag{…}, ты накнёшься на странную строчку
текста, которая сразу даст понять, что это и есть ответ на задание.

Что ещё мне нужно знать?

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

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

Если вдруг что-то не получается, не расстраивайся, просто попробуй ещё раз, а возможно к заданию стоит
подойти совсем с другой стороны.

Теперь можно начинать!

Добавить комментарий