ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Пишем консольный клиент для Web-сервиса на примере Hash Cracking Bot (HCB)
  #1  
Старый 15.10.2009, 12:14
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию Пишем консольный клиент для Web-сервиса на примере Hash Cracking Bot (HCB)

Пишем клиент для Web-сервиса на примере Hash Cracking Bot (HCB) для hashcracking.info

[Intro]
Сидел я на работе в одно дождливое осеннее утро попивая утренний кофе и мечтал... Мечтал о суперботнете для распределённых вычислений на GPU.
Ведь если взять хотя бы 10% мощности современной видеокарты, то скорость перебора для MD5 хэшей получится в районе 30-50 млн. пасс/сек. Представим ботнет из 1К таких компьютеров и получаем производительность 30-50 млрд. пасс/сек. Две самые мощные видеокарты на одном компе дадут производительность 1-1,5 млрд. пасс/сек, но это при 100% загрузке обеих GPU, что отрицательно сказывается на производительности компьютера в целом. (Т.е. чтоб комфортно работать на нём, ресурсов не хватит, конкретно - пропускной способности шины данных между GPU-память не хватает). Вообщем мечты, мечты...
Тут я вспомнил подпись Электа "Кто, если не ты сам?" и решил начать с малого, чтоб мечта, хоть как-то приблизилась к той альтернативной реальности, где этот бот уже существует в виде "правильного" набора байтов (реализован в коде). Теперь посмотрим вперёд: У ATI тоже есть своя технология для разработки и написания софта для параллельных вычислений, пример тому программа брутфорсер IGHASHGPU (https://hashcracking.info/forum/viewtopic.php?f=10&t=304) которая поддерживает как видеокарты nVidia 8xx, так и ATI 4хх и пока бесплатна. Т.е. логично предполагать, что каждый второй или третий комп через 1-2 года будет оснащён такой видеокартой. Активные пользователи интернета - молодёжь, а значит, они любят и развлечься - поиграть в компьютерные игры, т.е. имеют в компе современную видеокарту. Конечно это предположение... Но скорее всего именно через 1-2 года бот будет как нельзя кстати, т.е. есть время начать его писать уже сейчас.

Термины используемые в статье
cURL — это свободная (распространяемая по лицензии MIT)[1], кроссплатформенная служебная программа командной строки для передачи файлов по различным протоколам с синтаксом URL. Автором и обладателем всех прав является Daniel Stenberg.
SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет.
(c) Вики
[Для кого написана статья?]
Статья для начинающих кодеров на PHP, для тех кто не работал с CURL, SSL, а использовал сокеты. Как раз этот пробел я восполню, ибо в сети полная инфа по CURL есть на английском и мало примеров использования на русском. Статья будет интересна хэшкрякерам, тем, кто использует программы брутфорсы и юзает сервис hashcracking.info (имеет там учётную запись).

[Нафиг я её писал?]

Раскрутка сервиса hashcracking.info? (она имеет обратную сторону - при использовании бота Вам заходить на сайт совсем не надо - он всё сам делает) Так что не обвиняйте меня в том, что это реклама! Популяризация хэшкряка (как занятия, хобби, работы) как такового в рунете. Популяризация кодинга на PHP для создания win-приложений. Пополнение рядов хэшкрякеров в этом увлекательном деле. Кто-то любит ловить рыбу, хэшкрякеры любят ловить пароли, и чем жирнее (чарсет) и длиннее тем лучше. Вообщем я ничего давно не писал и вот решил написать, я думаю многие по достоинству оценят сей труд, а немногие будут плеваться, ну на это мне самому, как бы, наплевать. Социалки достали уже, если честно, эпоха расцвета WEB2

[Подготовка]
На чём писать? Подумал я... Хотелось бы конечно сделать в идеале на Visual С++ c красивыми окошками и т.д. но учитывая мои слабые знания в этой области (где брать либы, где достать хороший ман по функциям и т.д.) я решил это дело оформить на PHP. PHP привлекателен тем что содержит мощный набор встроенных функций и заточен под WEB. Кроме того вспомнил одну запись в блоге Raz0r`a, что есть удобные инструменты для разработки полноценных приложений для windows и компиляции php в exe, прикручивания GUI к приложению. Вообщем полез я в его блог искать ту запись и нашёл в архивчике.
Инструментов обнаружилось два: это mini PHP Studio (http://exvision.net/miniphp/) и RoadSend Studio (http://www.roadsend.com/home/index.php). Я скачал оба и попробовал некоторые тестовые скрипты, в итоге мне больше понравился mini PHP Studio своей лаконичной простотой в управлении, а с RoadSend Studio постоянно возникали какие-то проблемы из-за отсутствия нужных библиотек (хотя я их подключал практически все). Вообщем инструмент я выбрал. Будем использовать mini PHP Studio. Для того чтоб заюзать все возможности CURL и SSL нам необходимо будет найти и подключить к php соответствующие либы (расширения). Необходимы две либы это: php_curl.dll и php_openssl.dll. Так же я узнал чтоб всё это дела работало необходимы системные библиотеки это libeay32.dll и ssleay32.dll. Чтоб не заморачиваться с их поиском просто рекомендую установить поддержку Open SSL Win32 (http://www.slproweb.com/products/Win32OpenSSL.html) и они появятся в системе. Теперь всё готово и можно приступать к кодингу.

[Постановка задачи]
Мы хотим разработать клиентское приложение для общения с WEB-сервисом, а именно бота для hashcracking.info , который будет выполнять следующие функции:
1. Скачивание нужной очереди хэшей с сервиса (авторизация не требуется).
2. Запуск программы брутфорса (тут на примере будем EGB натравливать на очередь хэшей).
3. Отправка найденных паролей от хэшей в очереди на сервис (необходима авторизация).
Это неполный список задач, но это только начало.

[Подводные камни]
Ну во-первых, всем известно что hashcracking.info работает только по https протоколу, при обращении к любой странице по http отображается морда-заглушка сайта, с которой потом идёт редирект на https.
Во вторых, на работе у меня локальная прокся (UserGate4), поэтому надо сделать так чтоб бот её мог использовать, иначе он не сможет достучатся до сервиса.
Ну и последнее, что использовать сокеты или CURL? Дружит ли он с SSL? Кроме того для отправки паролей необходима авторизация на сервисе.
Чтобы разрешить все сомнения я полез в гугл и нашёл ман по СURL на английском и убедился что поддержка SSL и PROXY в нём реализована, поэтому и остановил свой выбор на нём. Кроме того использовать его намного проще чем заморачиваться с сокетами.


[Кодим]
Настройки бота я решил положить в один файл hcb.ini, где первая строка описание параметра, вторая - его значение. Все параметры добавлял туда по мере разработки проекта, Вам привожу окончательный вид на данный момент:
Код:
Файл с хэшами (очередь с сервера запишется в него, сохраняется в папку брутфорса, путь указывать не надо)
md5.txt
--------------------------------
Файл с найденными паролями (сюда складываются найденные пассы) EGB пишет в ту же папку где находится бот, путь указывать не нужно:
md5.dic
--------------------------------
Путь к EGB (без кавычек, пример: D:\EGB\  )
D:\EGB\
--------------------------------
Тип запуска EGB(0-без создания окна, 1 - в свёрнутом виде)
1
--------------------------------
Тип скачиваемой очереди: (только mysql, md5, sha1, mysql5)
md5
--------------------------------
Логин на сервисе hashcracking.info
логин
-------------------------------
Пароль на сервисе hashcracking.info
пароль
-------------------------------
HTTPS Прокси (если не используется оставляем пустую строку) 

-------------------------------
Порт 

-------------------------------
Тип прокси (по умолчанию https или SOCKS5)
https
-------------------------------
Время, через которое проверять найденные новые пароли в сек.
1
-------------------------------
Пароли от двойных md5 хэшей (0 не добавлять, 1- добавлять)
1

Имена модулей EGB, ini-файла, выходного файла найденных стандартные по названию алгоритма хэширования.
т.е. [md5.exe md5.ini md5.dic]; [mysql.exe mysql.ini mysql.dic]
Учётная запись на сервисе hashcracking.info, от имени которой будет работать бот.
Напишем шапку бота, который прочитает все эти параметры:
PHP код:
$ipArray array_map("trim"file("hcb.ini")); //читаем файл параметров
$file_1 trim($ipArray[1]); // имя файла с полученными хэшами
$file_2 trim($ipArray[4]); // имя файла с наденными паролями
$dir trim($ipArray[7]); // директория где расположена EGB
$hidden=trim($ipArray[10]); // 0-Запуск EGB без созднания окна 1 - в свёрнутом окне
$type trim($ipArray[13]); // тип очереди хэшей
$login trim($ipArray[16]); //Ваш логин на сервисе
$passwd trim($ipArray[19]); //Ваш пароль на сервисе
$proxy trim($ipArray[22]); //HTTPS прокси-сервер.
$port trim($ipArray[25]); //Порт прокси
$t trim($ipArray[28]); //Тип прокси, по умолчанию HTTPS
$time trim($ipArray[31]); //Время через которое проверять новые найденные пароли
$md5md5 trim($ipArray[34]); // признак того, что добавляются пароли от двойных md5 хэшей
if ($t==''$t='https'
Приступим теперь к реализации функции скачки очереди:

[1.Скачивание очереди хэшей]
Казалось бы тривиальная задача скачать файл оборачивается написанием функции из-за использования SSL.
Сервис хэшкрэкинга предоставляет нам свой API для получения очереди (и не только) таким образом:
Код:
https://hashcracking.info/check.php?hash=[тип хэша], где тип хэша может принимать значения mysql, md5, sha1, mysql5
т.е. авторизация никакая не требуется для получения очереди хэшей.
Напишем функцию скачки очереди get_hash($n), предварительно объявив несколько глобальных переменных, которые будут использоваться как в функциях, так и в основном коде, это параметры прокси-сервера:
PHP код:
GLOBAL $proxy$port$t
Теперь сама функция:
PHP код:
function get_hash($n)//Функция скачки очереди с hashcracking.info по https
  
{
   GLOBAL 
$proxy$port$t// Объявляем глобальными
   
$ch curl_init(); // инициализация cURL сессии
   
$uri='https://hashcracking.info/check.php?hash='.$n//URL Гет-запроса
   
curl_setopt($chCURLOPT_URL$uri); // Устанавливаем опцию, т.е. формируем хидеры запроса
   
if ($proxy!=''// Если прокси задан, то задаём  два доп. параметра
    
{
    
curl_setopt($chCURLOPT_PROXYTYPE$t); // Устанавливаем тип прокси
    
curl_setopt($chCURLOPT_PROXY$proxy.':'.$port); //Устанавливаем IP и PORT Прокси-сервера
    
}
   
curl_setopt($chCURLOPT_TIMEOUT120); // Устанавливаем таймаут, в течении которого cRUL будет ждать получения всего ответа от сервера
   
curl_setopt($chCURLOPT_RETURNTRANSFER1); // вернуть результат запроса, а не выводить в браузер.
   
curl_setopt($chCURLOPT_SSL_VERIFYHOSTFALSE); // Не проверяем хост (на hashcracking.info самоподписанный просроченый сертификат)
   
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE); // Удалённый сервер не будет проверять наш сертификат
   
$answ=curl_exec($ch); // Отсылаем запрос и плучаем ответ - строку с хэшами.
   
curl_close($ch); // Закрываем cURL сессию.
   
return $answ// Возвращаем список хэшей.

Я думаю тут ничего пояснять не надо, кого интересуют другие возможные передаваемые параметры, можете глянуть тут: http://htmlweb.ru/php/php_curl.php

[2. Запуск программы брутфорса]
И так мы должны скачать очередь, записать её в файл и положить в папку брутфорсера EGB, далее запустить брутфорсер в фоновом режиме. Т.е. бот не будет ждать завершения брутфорса, а должен будет продолжить свою работу.
PHP код:
$file_1=$dir.$file_1// дописываем путь к имени файла
@$handle1 fopen($file_1"w"); //открываем файл для записи очереди хэшей
@$handle2 fopen($file_2"a+"); //открываем файл для чтения паролей
@$size2=filesize($file_2); //получаем размер файла паролей
$day=0// инициализация счётчика дней работы бота
echo "Download hashlist $type ..."//Выводим в консоль
if (fwrite($handle1get_hash($type)) === FALSE//скачиваем очередь хэшей
    
{
        echo 
"Don`t write to $file_1\r\n"// Выводим ошибку записи в файл.
        
exit;
    }
    else
    {
    @
$size1=filesize($file_1); //Размер файла очереди в байтах
    
echo "ok!\r\nWrite to $file_1 done! $size1 byte\r\n";  // Успешно записан!
    
}
fclose($handle1); //Закрываем файл 
Итак, очередь мы скачали. Теперь требуется запустить брутфорс из под бота.
Недолго погуглив я нашёл приемлемые варианты запуска в фоновом режиме:
PHP код:
$WshShell = new COM("WScript.Shell"); //создаём  COM объект WScript.Shell
if (file_exists($dir.$type.".exe")) //если исполняемый модуль брутфорсера найден.... иначе выход
    
{
if (
$hidden==0// запуск без создания окна в фоновом режиме
    
{
        
$command_line=$dir.$type.".exe /C dir /S %windir% ".$dir.$type.".ini ".$dir.$type.".txt";  //формируем командную строку
        
$oExec $WshShell->Run($command_line0false); // запуск брутфорсера
    
}
else  
// запуск в свёрнутом окне в фоновом режиме
    
{
        
$command_line=$dir.$type.".exe ".$dir.$type.".ini ".$dir.$type.".txt"//формируем командную строку
        
$oExec $WshShell->Run($command_line7false); // запуск брутфорсера
    
}

    echo 
"EGB Working!\r\n"// Печатаем в консоль что EGB работает.
    //.................................
    
}
else echo 
"EGB not found! I can`t run it!"// Иначе EGB не найден, запуск не возможен. 
Половина задачи решено, тестим, видим что это дело всё работает. Теперь мы подошли к третьему шагу: Отслеживание изменения файлов и отправка результатов на сервер.

3. Отправка найденных паролей от хэшей в очереди на сервис (необходима авторизация).
Тут надо определится как мы будем отслеживать какие пароли нашёл брутфорсер. Я решил буду это определять считывая размер файла. Т.е. если размер файла изменился, то читаю пароли с указателя равному предыдущему размеру файла до конца файла. Размер файла будем замерять периодически.
Итак:
PHP код:
clearstatcache (); // сбрасываем кэш в файл на диск
    
if ($size2<@filesize($file_2)) // если размер файла увеличился
    
{
    
$n=0;
    
$passlist='';
    
$fs=fseek($handle2 ,$size2,'SEEK_SET'); //устанавливаем позицию на начало участка дописанных данных
    
while (!feof ($handle2)) // пока не достигнут конец файла
        
{
        
$string=fgets($handle2); //читаем строки (пароли)
        
if ($string!='') {$passlist.=$string$n=$n+1;} // если строка не пустая, до добавляем, счетчик паролей
        
}
    
$size2=filesize($file_2); //Присваиваем переменной новый размер файла
    
echo "\r\n".convert_cyr_string($passlist,'w','a'); // Выводим  список найденных паролей в консоль
    
if ($passlist!=chr(9).chr(10)) // если пасслист не пустая строка из символов возврат каретки и перевод строки
     
{
     echo 
"\nNew ".($n)." pass found! Sending..."//Печатаем отправка паролей
     
echo "Ok!\r\n".put_pass($passlist); //Отправляем пароли на сервис
     
}
    } 
Для отправки паролей функцией put_pass($passlist) необходима авторизация на сервисе, оформим её отдельной функцией.

...Продолжение следует.
Оно нужно? Если тема не найдёт свою аудиторию, боян и т.д., то продолжать не буду, юзайте готового бота и не лазайте на сайт браузером
P.S.Скачать готового бота и затестить можно тут: http://slil.ru/28080917
Результаты проверки на VirusTotal.com:
Цитата:
Файл hcb.exe получен 2009.10.15 08:23:52 (UTC)
Текущий статус: закончено
Результат: 1/41 (2.44%)
Форматированные
Печать результатов Антивирус Версия Обновление Результат
a-squared 4.5.0.41 2009.10.15 -
AhnLab-V3 5.0.0.2 2009.10.14 -
AntiVir 7.9.1.35 2009.10.14 -
Antiy-AVL 2.0.3.7 2009.10.15 -
Authentium 5.1.2.4 2009.10.15 -
Avast 4.8.1351.0 2009.10.14 -
AVG 8.5.0.420 2009.10.15 -
BitDefender 7.2 2009.10.15 -
CAT-QuickHeal 10.00 2009.10.15 -
ClamAV 0.94.1 2009.10.15 -
Comodo 2606 2009.10.15 -
DrWeb 5.0.0.12182 2009.10.14 -
eSafe 7.0.17.0 2009.10.14 Suspicious File
eTrust-Vet 35.1.7068 2009.10.14 -
F-Prot 4.5.1.85 2009.10.14 -
F-Secure 8.0.14470.0 2009.10.15 -
Fortinet 3.120.0.0 2009.10.15 -
GData 19 2009.10.15 -
Ikarus T3.1.1.72.0 2009.10.15 -
Jiangmin 11.0.800 2009.10.15 -
K7AntiVirus 7.10.870 2009.10.14 -
Kaspersky 7.0.0.125 2009.10.15 -
McAfee 5771 2009.10.14 -
McAfee+Artemis 5771 2009.10.14 -
McAfee-GW-Edition 6.8.5 2009.10.15 -
Microsoft 1.5101 2009.10.15 -
NOD32 4508 2009.10.14 -
Norman 6.01.09 2009.10.14 -
nProtect 2009.1.8.0 2009.10.15 -
Panda 10.0.2.2 2009.10.15 -
PCTools 4.4.2.0 2009.10.14 -
Prevx 3.0 2009.10.15 -
Rising 21.51.31.00 2009.10.15 -
Sophos 4.46.0 2009.10.15 -
Sunbelt 3.2.1858.2 2009.10.15 -
Symantec 1.4.4.12 2009.10.15 -
TheHacker 6.5.0.2.042 2009.10.14 -
TrendMicro 8.950.0.1094 2009.10.15 -
VBA32 3.12.10.11 2009.10.14 -
ViRobot 2009.10.15.1985 2009.10.15 -
VirusBuster 4.6.5.0 2009.10.14 -
Дополнительная информация
File size: 1940992 bytes
MD5 : 93eec2db8430807c74e43755811ff533
SHA1 : fad3cf6e15b777ed62f3531def196932c22c57b6
SHA256: dca892e6762fda509e7a9d065edc7912731d922b1d317504fd 51e89e678bff4b
PEInfo: PE Structure information

( base data )
entrypointaddress.: 0x572C60
timedatestamp.....: 0x484FDF6F (Wed Jun 11 16:21:35 2008)
machinetype.......: 0x14C (Intel I386)

( 3 sections )
name viradd virsiz rawdsiz ntrpy md5
UPX0 0x1000 0x3AE000 0x0 0.00 d41d8cd98f00b204e9800998ecf8427e
UPX1 0x3AF000 0x1C4000 0x1C4000 7.92 ea71cf96a348295c58a509d39b862875
.rsrc 0x573000 0x16000 0x15A00 5.10 a9ba721f582fbed730f0f561d05e6079

( 13 imports )

> advapi32.dll: RegCloseKey
> comctl32.dll: -
> comdlg32.dll: ChooseColorA
> gdi32.dll: PatBlt
> kernel32.dll: LoadLibraryA, GetProcAddress, VirtualProtect, VirtualAlloc, VirtualFree, ExitProcess
> msimg32.dll: AlphaBlend
> msvcrt.dll: getc
> ole32.dll: OleCreate
> oleaut32.dll: -
> shell32.dll: SHGetMalloc
> user32.dll: GetDC
> winmm.dll: PlaySoundA
> ws2_32.dll: -

( 0 exports )
TrID : File type identification
UPX compressed Win32 Executable (43.8%)
Win32 EXE Yoda's Crypter (38.1%)
Win32 Executable Generic (12.2%)
Generic Win/DOS Executable (2.8%)
DOS Executable Generic (2.8%)
ssdeep: 49152:79O8Q1n7aqJXCcE39S5gQC0RTG/ZHAccWOtssTuQ8GO:g8M7tJXm39QC0ZGRAccXCsyQ
PEiD : -
packers (Kaspersky): PE_Patch.UPX, UPX
packers (F-Prot): UPX
RDS : NSRL Reference Data Set
P.P.S. Если траблы с запуском установите Open SSL Win32 и Visual C++ 2008 Redistributables, скачать тут: http://www.slproweb.com/products/Win32OpenSSL.html

Последний раз редактировалось -=lebed=-; 26.10.2009 в 11:05..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Взлом Unix а silveran *nix 4 21.12.2005 22:46
Защита Web приложений с помощью Apache и mod_security k00p3r Чужие Статьи 0 12.06.2005 20:51



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ