
Big Iron Recon & Pwnage
автор @singe (Dominic White @ SensePost)
BIRP — это инструмент, который помогает при оценке безопасности мейнфреймовых приложений, работающих через TN3270. Подобно тому, как BURP и другие прокси для веб-приложений помогают в тестировании веб-приложений, BIRP нацелен на то же самое для приложений TN3270. И, как и в случае с веб-приложениями, возможность видеть и изменять поля, которые разработчик приложения считал невидимыми или неизменяемыми, позволяет обойти допущения безопасности.
В частности, BIRP предоставляет две возможности для начинающего хакера TN3270. Первая — он показывает все данные, возвращаемые приложением на экран. Это включает скрытые поля. Вторая — он позволяет изменять поля, помеченные как "защищённые" (aka "неизменяемые"). В зависимости от того, как разработано приложение, это может позволить изменить функциональность приложения.
./birp.py -h выведет справку для запуска.
Всё, что нужно — указать цель с помощью -t. Спецификация цели может включать порт после двоеточия после IP, например, 10.10.10.10:1023. Если порт не указан, по умолчанию используется :23, как и в x3270.
Вы можете использовать -l для загрузки ранее сохранённого файла истории в историю. Вы должны всегда указывать цель и пока, к сожалению, не можете просто просматривать историю.
Ознакомьтесь с предварительными требованиями ниже для установки. К сожалению, сейчас это работает только в Unix-средах, поддержка Windows отсутствует.
В настоящее время BIRP имеет довольно ограниченный набор функций. Это:
Интерактивный режим — сердце функциональности BIRP. Он передаёт нажатия клавиш и другие команды от BIRP к x3270 и позволяет аналитику взаимодействовать с приложением так же, как если бы они использовали x3270 напрямую. Однако, он также отображает размеченное "хакерское представление" каждого возвращённого экрана, а также записывает "транзакции" и сохраняет их в прокси-истории для последующего анализа и проверки.
В интерактивном режиме нажатие Ctrl-h выведет справку, Ctrl-k отобразит цветовую легенду, а ESC вернёт в меню.
BIRP пытается определить, когда произошла "транзакция", и записывает экран до и после, а также изменённые поля. Некоторые клавиши обычно гарантированно инициируют транзакцию, например Enter или любые клавиши PF/PA. Однако, если по какой-то причине экран требует других клавиш для работы, вы можете вручную "запушить" транзакцию с помощью Ctrl-u сразу после выполнения действия.
Наконец, если вы хотите, чтобы экран был перерисован, нажмите Ctrl-r.
Это отобразит историю всех транзакций, записанных BIRP, и позволит их просмотреть. В частности, предоставляет доступ к отправленному экрану, полям, которые были изменены на этом экране (т.е. отправленным данным) и ответу.
Для каждого экрана отображается только первая строка для контекста, но полный экран можно распечатать, если просмотреть транзакцию.
Также можно войти в Python и изучить объект экрана напрямую.
Здесь вы можете выполнить поиск с учётом регистра, чтобы найти транзакции с экранами, содержащими определённый текст.
Вы можете сохранить свою историю в файл и загрузить её позже с помощью параметра -l в командной строке. Сохранять нужно в уникальное имя файла.
Инструмент ещё не завершён, и сейчас есть много веских причин иметь возможность напрямую работать с объектами. Вы можете войти во встроенную оболочку IPython в различных местах. BIRP имеет довольно полезный набор объектов Python, которые можно опрашивать, и я убедился, что они имеют полезный вывод в стиле Python (str/repr). Главный объект — это "history", который содержит список "транзакций". Вы можете опросить последнюю добавленную транзакцию, обратившись к history.last(). Каждая транзакция имеет объекты экрана запроса и ответа. Так, например, чтобы получить список всех скрытых полей в последнем ответе от сервера, вы можете использовать: history.last().response.hidden_fields
Для более подробной информации лучше всего изучить модуль tn3270.py.
Библиотеки Python: py3270 (v0.3.4), colorama, IPython Их можно установить с помощью pip или easy_install. До тех пор, пока py3270 не примет этот pull request (https://github.com/py3270/py3270/pull/13), используйте мою библиотеку py3270 (https://github.com/singe/py3270).
Модифицированный клиент x3270 (v3.6) Патчи прилагаются. Вы можете загрузить исходный код по адресу http://x3270.bgp.nu/download.html, затем перейти в каталог suite3270 после распаковки и выполнить patch -p1 < suite3270-full.patch Вы можете использовать немодифицированный клиент, но тогда вы не сможете редактировать защищённые поля. Патч вносит два изменения: первое позволяет редактировать защищённые поля, второе делает скрытые поля видимыми (отображаются инверсным выделением текста). Эта функциональность разделена на два отдельных патча, если по какой-то причине вам нужен только один из них.
Обработка клавиш, которую я использую, — это моя собственная реализация getch. Она довольно ужасна, но работает. Я бы хотел использовать более зрелую реализацию обработки клавиш, такую как curses, pygame, urwid и т.д., но все они хотят захватывать экран. Лично я считаю, что буфер прокрутки неоценим для записи моих действий или просто возможности прокрутить вверх и вспомнить, что я делал, поэтому я не хотел терять эту возможность, отсюда и такой подход.
Я счёл py3270 довольно грубым и в итоге обернул некоторые его части. Я предоставил это как отдельную обёртку, которую вы можете использовать в своих собственных программах.
Автор: dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage от SensePost лицензирован под Creative Commons Attribution-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/) Разрешения, выходящие за рамки этой лицензии, могут быть доступны по адресу http://sensepost.com/contact us/.