Задача: Автоматизировать рутинные действия над текстом посредством Notepad++.

 

Решение

Еще один пост про автоматизацию и ее блага для обычных людей :). Решая те или иные задачи, почти все сталкиваются с необходимостью «обрабатывать» какие-то текстовые файлики. В околохакерских делах это особенно заметно — большинство тулз используют их в качестве входных/выходных параметров, часто приходиться конвертировать. Под nix’ами все с этим делом отлично, а вот в винде — совсем нет. Конечно, можно «эмулировать» *nix и поставить grep и gawk под винду (gnu.org/software), но юзать виндовую недоконсоль — это издевательство над собой. Решение пришло в виде Notepad++. Это прекрасная вещь, особенно учитывая всевозможные дополнительные плагины к нему.

Возьмем, для примера, задачку — конвертировать вывод Cain’а в вид, удобный для поиска/сортировки. В решении данной задачки нам может помочь одна из следующих функций Notepad++: либо поиск/замена с поддержкой регулярных выражений, либо макросы. В случае использования поиска, замены и regexp’ов последовательность действий будет иметь вид:

  1. ^.*:sменяем на пустую строку
  2. rn
  3. :---------------------на rn

Хотелось бы отметить, что в Notepad++ не все возможности regexp’ов работают, а жаль. Но в данном случае более эффективным будет использование макросов. Сначала запускаем запись («Макросы t, Старт записи»), выполняем необходимую последовательность действий, останавливаем запись. Далее макрос можно сохранить и забиндить на какую-то последовательность клавиш. В задачке с Cain’ом лучше накликать последовательность для одной записи и запустить макрос до конца файла. Также желательно чаще юзать кнопки типа <Home>, <End>. Сохраняемые макросы можно увидеть в файле shortcuts.xml. Лежит он либо в папке с Notepad++, либо в %APPDATA% в многопользовательском режиме. Там же их можно отредактировать.
С этим все просто, кроме кодов клавиш, но их можно почерпнуть отсюда: notepad-plus-plus.ru/uploads/cod.zip.

 

Задача: Проследить за действиями процесса, используя Process Monitor

 

Решение

Если ты знаком с тулзами Sysinternal, то можешь пропустить следующий текст. Если же нет — качаем (sysinternals.com) и знакомимся. Там реально много всякого интересного и полезного для всех: от админов до ресерчеров (ну и крайности 🙂 ).

Для решения задачи, связанной с отслеживанием производимых каким-то процессом действий, нам потребуется Process Monitor (procmon.exe). Это чрезвычайно удобная и полезная тулза. Мониторит активность, связанную с файловой системой, реестром, взаимодействием между процессами и по сети. К примеру, для описанной выше задачи с Notepad++ требовалось найти, где хранится shortcuts.xml.

Решение:

  1. Запускаем Notepad++ и Procmon.
  2. Прописываем фильтр в Procmon: «Process name is notepad++.exe»
  3. Закрываем Notepad++.
  4. Смотрим на взаимодействие с файловой системой ОС.

Есть еще приятная возможность — на уже отфильтрованные записи наложить дополнительные фильтры и/или просмотреть, например, список объектов (файлов, веток реестра), к которым процесс вообще обращался. Делается это в «Tools - File Summary», там же накладываются дополнительные фильтры. Фильтры и логи можно сохранять, а к указанным объектам перемещаться в один клик. Комфорт! Это тулза из разряда «лучше один раз увидеть, чем сто раз услышать». Так что очень советую помучить ею что-нибудь на досуге.

 

Задача: Динамическое применение прокси-сервера

 

Решение

Думаю, многие согласятся, что FireFox сейчас самый адекватный и распространенный браузер. Особенно он хорош своими аддонами. Многие из них уже были описаны здесь, но я все равно похвалю такое творение как FoxyProxy. FoxyProxy — это аддон для работы с прокси-серверами. Основная фича, конечно же, в возможности использовать тот или иной прокси-сервер в зависимости от того, какой сайт запрашивается. А если точнее, то на основании шаблонов.

Таким образом, по обычным сайтам ползаешь просто так, а на тот, что «мучаешь», заходишь через прокси. Шаблоны можно задавать либо в виде регулярных выражений, либо в виде шаблонов :). Примеры слишком просты, так что пропущу их. А сам аддон очень полезен также и для решения следующей задачи.

 

Задача: Динамическое изменение http(s)-запросов в Webscrab

 

Решение

Ну, начнем с того, что как-то передо мной возникла проблема — одна тулза не умела аутентифицироваться (Base64) по http, а научить ее было необходимо. В решении данной задачи мне помог webscrab.

Я уже как-то писал о нем, но напомню. Webscrab — это как минимум прокси-сервер с широкими возможностями по модификации запросов/ответов, а как максимум — фрэймворк с плагинами и скриптами. Взять можно у OWASP’а (owasp.org/index.php/Category:OWASP_WebScarab_Project). Что приятно — webscrab написан на яве и кроссплатформен. Минус — последние несколько лет не поддерживается. Хороший русскоязычный хелп по webscrab написал Kuzya — forum.antichat.ru/showthread.php?t=106452.

Задача с аутентификацией решилась слишком просто. Прописал системный прокси на webscrab (127.0.0.1:8008, по умолчанию), так как в тулзе не было возможности прописать прокси, в webscrab добавил сайт, а также логин, пароль и realm (строка приветствия от сервера) в меню «Tools - Credentials». Все!

Вообще-то я надеялся, что мне удастся помучить интересную возможность webscrab — изменение перехватываемых http-запросов/ответов. Так что следующие примеры абстрактны. Для подключения динамического изменения запросов сначала требуется включить полное отображение функционала «Tools - User full-featured interface», а далее перейти в «Proxy - Bean Shell». Подключаем — Enabled. После каждого изменения кода кликаем Commit. Понятно, что «динамику» придется писать на Bean’е. Bean Shell — это скриптовый язык на Java. Никогда раньше не сталкивался, но оказалось все просто. Доки по языку тут — beanshell.org/manual/bshmanual.html.

Но давай лучше посмотрим на примерах:

public Response fetchResponse(HTTPClient nextPlugin,
Request request) throws IOException
{
//Блок 1
String url = request.getURL().toString();
url = url.replace("testphp.vulnweb.com", "www.ya.ru");
httpurl = new HttpUrl(url);
request.setURL(httpurl);
//Блок 2
request.deleteHeader("Proxy-Connection");
request.addHeader("TEstHEadER","0_o");
//Блок 3
response= nextPlugin.fetchResponse(request);
byte[] bytes = response.getContent();
if (bytes != null) {
String content = new String(bytes);
content="<h1>Hacked by GreenDog<h1>"+content;
response.setContent(content.getBytes());
}
return response;
}

Для удобства я разбил задачку на несколько блоков. Итак, в блоке 1 мы заменяем запрашиваемый URL с testphp.vulnweb.com на www.ya.ru (думал в качестве примера обмануть сканнер Acuntix’а — не получилось 🙂 ). В последней строке указываем полученный URL в качестве URL будущего запроса.

Далее в блоке 2 в нашем запросе мы сначала удаляем заголовок, автоматически создаваемый прокси («чтобы никто не догадался»), а далее добавляем псевдорандомный заголовок. В блоке 3 сначала инициируется запрос, модифицированный ранее, а после к полученному ответу, в начало, добавляется остроумная строка. Полученный результат отправляется из прокси.

Полагаю, что описанные выше примеры дают необходимый минимум знаний для написания чего-то своего. Прочие возможности для доступа к различным частям запросов/ответов тут: owasp.org/index.php/How_to_modify_proxied_conversations.

Остальное реализуется силами bean shell’а.

В качестве дополнительного совета могу предложить использовать последовательность проксиков-webscrab’ов («Tools - Proxies»). То есть получится браузер-webscrab, в котором пишешь на bean shell’е <—> webscrab для мониторинга результатов <–> сеть.

 

Задача: Научиться гуглить :).

 

Решение

Уметь гуглить, то есть быстро и точно находить верную информацию, — вещь необходимая для любого хакера в широком смысле этого слова. Я бы даже сказал — основная. Так что если у тебя проблемы с этим — учись :). Поможет тебе, во-первых, твой мозг, а во-вторых — знание гуглохаков. Например, тулза от достаточно знаменитой хак-группы YEHG — GoogleHacker (yehg.net/lab/pr0js/files.php/googlehacker.zip). В ней ты просто вводишь строку и накликиваешь необходимые параметры для поиска. Это, по сути, простая html’ка — значит, у тебя есть возможность подкорректировать ее под себя. Плюс в ней содержится база стандартных гуглохаков.

 

Задача: Обход php-функции Addslashes для SQL-инъекций

 

Решение

Наверное, ни для кого не секрет, что SQL-инъекции — вещь страшная. Не зря они стоят на первом месте в топе от OWASP’a. Эта тема поднималась на страницах ][ не раз, затрону и я ее (хотя и немного косвенно).

PHP и MySQL — это самая распространенная сейчас связка при разработке web-ресурсов. Важный момент в безопасности — конечно же, фильтрация пользовательского ввода в PHP перед передачей строки запроса в MySQL. По опыту общения с веб-девелоперами могу сказать, что очень немногие из них разбираются во всевозможных SQL-инъекциях и их подвидах. Чаще всего пользуются какой-нибудь функцией и все. Либо mysql_real_ escape_string (как вариант — без real), либо addslashes. Второй, конечно, реже, но все же пользуются.

Для справки: addslashes добавляет экранирующий символ (то есть слэш «/») перед символами одинарных (0x27) и двойных (0x22) кавычек, бэкслэшем (0x5c) и перед null-байтом (0x00). Таким образом, данное экранирование лишает взломщика возможности провести инъекцию.

Но в определенных ситуациях мы можем обойти эту функцию. В каких? Когда при взаимодействии с базой данных используются мультибайтовые кодировки — SJIS, BIG5, GBK, CP932. Возможны и другие, но точно не UTF. Могут быть дополнительные ограничения в виде MySQL 4.1.х-4.1.20, 5.0.x-5.0.22 и PHP < 5.2.5 Как видишь, спектр возможных целей сужается, но все же стоит об этом помнить, особенно «работая» с иностранными сайтами.

Но посмотрим, в чем же суть уязвимости. Для кодировки GBK, например, 0xbf27 — неправильная последовательность, такого символа нет. В то же время символ 0xbf5c — есть. Теперь посмотрим на работу функции addslashes: она берет по одному байту и экранирует его, если необходимо. 0xbf — это «Ќ„», 0x27 — это кавычка, ее экранируем.

На выходе получается 0xbf5c27 (. '), но в MySQL воспринимается два символа — 0xbf5c и 0х27, то есть «что-то» и кавычка.

SQL-инъекция в простейшем виде будет такой:

http://test.com/Vuln.php?id=%bf%27 OR 1=1 /*

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

 

Задача: Модифицировать стандартный Windows-шелл

 

Решение

Вообще следующий материал будет полезен как для боевых условий при взломе win-систем, так и в нормальной жизни. Повторюсь, что виндовая консоль (так называемый cmd.exe) — та еще хреновина: отсутствует куча обыкновенных для шеллов возможностей, да еще и команды многие называются не как в nix’ах. Но с ней все же приходится работать. Что бы хоть как-то исправить положение, мы можем воспользоваться стандартной тулзой doskey. Это некое подобие команды alias под никсами. Doskey позволяет работать с хистори консоли и создавать/редактировать макросы как для консоли, так и для стороннего ПО. Что приятно — она есть во всех версиях Windows.

Приведу пару примеров, остальное можно почерпнуть либо тут: windowsfaq.ru/content/view/203/1, либо на официальном сайте Microsoft.

  1. Doskey /history
  2. Doskey ls=dir $*
  3. Doskey /exename=ftp.exe go=open 192.168.2.101$tmget *.TXT c:reports$bye

Пояснение по пунктам:

  1. Выводим список последних команд.
  2. Создадим алиас на dir с более знакомым именем и передачей параметров (за это отвечает $*).
  3. Создаем макрос для ftp.exe. Теперь, после введения команды go в ftp, сначала произойдет коннект к 192.168.2.101, далее скачаются все текстовые файлы и произойдет выход. Здесь $t — это разделитель в последовательности команд (open, mget, bye).

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

1.Сохраняем так:

doskey /macros > stdmacs

2.Подгружаем так:

doskey /macrofi le=stdmacs

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

Но это все мелочи. По-настоящему интересная штука нашлась на сайте Nirsoft’а. Там, конечно, много всего полезного, но это что-то совсем полезное :). Я говорю про консоль от Nirsoft’а — nircmdc.

Качаем и читаем описание здесь: nirsoft.net/utils/nircmd.html. Сразу же скажу, что более полное описание функционала (а без него и не справишься) лежит в хелпе к тулзе.

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

1.Меняем громкость на максимум:

nircmd.exe setsysvolume 65535

2.Выводим в трее страшную надпись:

nircmdc.exe trayballoon "Yo man!" "You are powned!" "shell32.dll,-15" 10000

3. Помещаем консоль «поверх всех окон» и делаем ее прозрачной:

nircmd.exe win settopmost title
"C:Windowssystem32cmd.exe" 1
nircmd.exe win trans title
"C:Windowssystem32cmd.exe" 100

4. Запрашиваем пользователя о перезагрузке и перезагружаемся при положительном ответе:

nircmd.exe qboxcom "Do you want to reboot?"
"question" exitwin reboot

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

 

Задача: Крадем Mscash-хэши из винды

 

Решение

О том, что это, и как их красть, я писал пару номеров назад, но все равно пройдусь еще раз по общей инфе. В windows-системах есть функция хранения последних 10 аутентификационных данных, то есть 10 последних заходов пользователей. Так называемый «кэш входов». Это необходимо для того, чтобы можно было логиниться доменным пользователям, когда отсутствует связь с контроллером домена, например. Как ты понимаешь, это лакомый кусочек для нас. Если мы получаем доступ к этому кэшу, мы сможем пробрутить пароли к учетным записям. Еще замечу, что в кэше хранятся не NTLM-хэши, как в SAM или LSA, а MSCache-хэши. Поправлюсь по сравнению с прошлым описанием MSCache. Они бывают двух видов.

Старый Windows 2000-2003:

hash = MD4 ( MD4(user password) + lowercase(user name) )

Новый MSCache2 в ОС, начиная с Vista:

hash = PBKDF2_SHA( MD4 (MD4(user password) + lowercase(username)), iterations )

Где iterations по стандарту равно 10240. Более подробно можешь прочитать тут: passcape.com/index.php?section=docsys&cmd=details&id=8.

Вне зависимости от алгоритма и MSCache, и MSCache2 перебираются, используя, например, john the ripper с jumbo-паком. Хотя второй, конечно, медленнее. Вот так плавно мы подошли к причине «повтора уже пройденного материала». В прошлый раз я писал, что мы можем заполучить кэши хэшей, используя тулзу fgdump. Ее главный косяк был в том, что о ней «все знают», и она палится большинством антивирсов.

Обход последних — дело, конечно, не трудное. Но закачивать тулзу каждому поовненному пользователю не методично. Методично — это скрипт для meterpreter. Но таких не было, пока Маурицио Агаццини из mediaservice.net не написал его. Расхватываем и радуемся: lab.mediaservice.net/code/cachedump.rb.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии