Crackeador MD5 por Diccionario

9:30 0 Comments A+ a-




Modo de uso:
Cracker.py [HASH (MD5)] [Diccionario]
Ejemplo:
Cracker.py e10adc3949ba59abbe56e057f20f883e diccionario.txt
Codigo en Python:
import md5, sys, getopt
ver= "1.0"
a=0
def run():
  
 if len(sys.argv) == 1 or sys.argv[1]=="-h" or sys.argv[1]=="--help":
  
   print ""
   print ""
   print "Modo de uso: Cracker.py [HASH (MD5)] [Diccionario]"
   print ""
   print "Ejemplo: Cracker.py e10adc3949ba59abbe56e057f20f883e diccionario.txt"
   print ""
    
 else:
  if sys.argv[1]=="-v" or sys.argv[1]=="--version":
   print "Cracker version: " + ver + "\nAutor: ANTRAX"
  
 
 if len(sys.argv) == 3:
     md5crack(sys.argv[1],sys.argv[2],)
 
  
def md5crack(hash,word):
 try:
  wordlist = open(word,"r")
 except IOError:
  print "Diccionario: " + word + " No Existe"
  sys.exit(0)
 
 global a
  
 for line in wordlist.xreadlines():
  word= line.replace("\n","")
  passw = md5.new(word)
 
  if (hash == passw.hexdigest()):
   print ""
   print "Password Crackeada!"
   print 'MD5: ' + passw.hexdigest() + ' ---> ' + word+''
   print "Visita Underc0de.org"
   a = 1
   sys.exit(0)
  
 if ( a == 0):
  print 'Password no Encontrada en este diccionario'
 wordlist.close()
 
def main():
 run()
 
   
if __name__ == "__main__":
    main()

Automatizacion Selenium IDE + Python

9:30 0 Comments A+ a-


Introducción
 
Selenium IDE es un complemento de Firefox utilizado para automatizar y hacer pruebas sobre aplicaciones web.
Para ello, realiza una grabación de determinadas acciones que luego las convierte en un script editable. Lo más cómodo, es que luego este script se puede ejecutar tantas veces como se quiera.
La función principal de este plugin es poder hacer testing funcional de las aplicaciones. Permite rellenar formularios, navegar por webs, etc.
Esta herramienta permite ahorrar mucho tiempo y esfuerzo. Para ello permite automatizar pruebas que puede ser una prueba en particular o conjunto de pruebas.

Instalación
Solo basta con ir a http://seleniumhq.org/download/ y descargar Selenium IDE.


Nos aparecerá el cartel para instalar el complemento y solo damos en permitir


Y comenzara a descargarlo…


Una vez descargado, lo instalamos


Una vez instalado, nos pedirá que reiniciemos el browser

 

Y con esto ya quedara instalado. Podremos encontrar Selenium en el menú de Herramientas del navegador

  


A demás de esto, necesitaremos instalar python y la librería de selenium para python (en mi caso)
Librería de Selenium: http://pypi.python.org/pypi/selenium
Una vez instalado python, copiamos las librerías de Selenium dentro de la carpeta de las librerías (C:\Python27\Lib).

 
Primeros pasos con Selenium

Abrimos el navegador, yo usare firefox. Iniciamos Selenium IDE


Apenas lo abrimos, comenzamos a navegar normalmente y Selenium grabara todos los pasos que hagamos.
Mis pasos son los siguientes:
[+] Google
[+] ANTRAX-LABS
[+] Boton Buscar
[+] Click en el link de mi blog


Como se puede ver, Ya estoy en mi blog y Selenium grabo todos mis pasos


Ahora lo que hare, sera comprobar un enlace de mi blog, para ello, con el botón secundario del mouse, dare click en un enlace de mi blog y seleccionare “verifyElementPresent…”


Como se puede ver en la imagen, han quedado grabados todos los pasos que hice.


Ahora se puede exportar el script de automatización a cualquiera de los lenguajes que se ven en la imagen. Yo trabajare con Python.


Guardamos el script con su extensión correspondiente

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TestAntraxLabs(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.google.com.ar/"
        self.verificationErrors = []
    
    def test_antrax_labs(self):
        driver = self.driver
        driver.get("/")
        driver.find_element_by_id("lst-ib").click()
        driver.find_element_by_id("lst-ib").clear()
        driver.find_element_by_id("lst-ib").send_keys("antrax-labs")
        driver.find_element_by_name("btnG").click()
        driver.find_element_by_link_text("[A]NTRAX [L]ABS").click()
        try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless"))
        except AssertionError as e: self.verificationErrors.append(str(e))
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True
    
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Y como resultado tendremos el script, que puede ser editable para añadir o modificar funciones

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TestAntraxLabs(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.google.com.ar/"
        self.verificationErrors = []
    
    def test_antrax_labs(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("lst-ib").click()
        driver.find_element_by_id("lst-ib").clear()
        driver.find_element_by_id("lst-ib").send_keys("antrax-labs")
        driver.find_element_by_name("btnG").click()
        driver.find_element_by_link_text("[A]NTRAX [L]ABS").click()
        try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless"))
        except AssertionError as e: self.verificationErrors.append(str(e))
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True
    
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Lo que hice acá, fue un ligero cambio. Reemplace la barra por la variable que contiene la url inicial, en mi caso la de google.


Si corremos el Script, se nos abrirá el navegador y automáticamente comenzara a navegar y a seguir los pasos que dejamos grabados.


Al finalizar, lanza un mensaje diciendo si paso o no la prueba. En mi caso busco y abrió mi blog correctamente y pudo verificar el enlace, en por eso que me dio el OK.
En caso de no pasar, tirara un mensaje de error.
Lo bueno de Selenium es que se puede trabajar en varios lenguajes y que sus scripts exportados son editables.

Barcode en Visual Basic

9:30 0 Comments A+ a-


Creamos un proyecto nuevo en VB, y solo necesitaremos 3 controles y un modulo.

Controles: 
* Textbox (txtID)
* Picturebox (Picture1)
* CommandButton (cmdPrint)

Codigo del Modulo:
Sub DrawBarcode(ByVal bc_string As String, obj As Control)
    
    Dim xpos!, Y1!, Y2!, dw%, th!, tw, new_string$
    
    'define barcode patterns
    Dim bc(90) As String
    bc(1) = "1 1221"            'pre-amble
    bc(2) = "1 1221"            'post-amble
    bc(48) = "11 221"           'digits
    bc(49) = "21 112"
    bc(50) = "12 112"
    bc(51) = "22 111"
    bc(52) = "11 212"
    bc(53) = "21 211"
    bc(54) = "12 211"
    bc(55) = "11 122"
    bc(56) = "21 121"
    bc(57) = "12 121"
                                'capital letters
    bc(65) = "211 12"           'A
    bc(66) = "121 12"           'B
    bc(67) = "221 11"           'C
    bc(68) = "112 12"           'D
    bc(69) = "212 11"           'E
    bc(70) = "122 11"           'F
    bc(71) = "111 22"           'G
    bc(72) = "211 21"           'H
    bc(73) = "121 21"           'I
    bc(74) = "112 21"           'J
    bc(75) = "2111 2"           'K
    bc(76) = "1211 2"           'L
    bc(77) = "2211 1"           'M
    bc(78) = "1121 2"           'N
    bc(79) = "2121 1"           'O
    bc(80) = "1221 1"           'P
    bc(81) = "1112 2"           'Q
    bc(82) = "2112 1"           'R
    bc(83) = "1212 1"           'S
    bc(84) = "1122 1"           'T
    bc(85) = "2 1112"           'U
    bc(86) = "1 2112"           'V
    bc(87) = "2 2111"           'W
    bc(88) = "1 1212"           'X
    bc(89) = "2 1211"           'Y
    bc(90) = "1 2211"           'Z
                                'Misc
    bc(32) = "1 2121"           'space
    bc(35) = ""                 '# cannot do!
    bc(36) = "1 1 1 11"         '$
    bc(37) = "11 1 1 1"         '%
    bc(43) = "1 11 1 1"         '+
    bc(45) = "1 1122"           '-
    bc(47) = "1 1 11 1"         '/
    bc(46) = "2 1121"           '.
    bc(64) = ""                 '@ cannot do!
    bc(65) = "1 1221"           '*
    
    
    
    bc_string = UCase(bc_string)
    
    
    'dimensions
    obj.ScaleMode = 3                               'pixels
    obj.Cls
    obj.Picture = Nothing
    dw = CInt(obj.ScaleHeight / 40)                 'space between bars
    If dw < 1 Then dw = 1
    'Debug.Print dw
    th = obj.TextHeight(bc_string)                  'text height
    tw = obj.TextWidth(bc_string)                   'text width
    new_string = Chr$(1) & bc_string & Chr$(2)      'add pre-amble, post-amble
    
    Y1 = obj.ScaleTop
    Y2 = obj.ScaleTop + obj.ScaleHeight - 1.5 * th
    obj.Width = 1.1 * Len(new_string) * (15 * dw) * obj.Width / obj.ScaleWidth
    
    
    'draw each character in barcode string
    xpos = obj.ScaleLeft
    For n = 1 To Len(new_string)
        c = Asc(Mid$(new_string, n, 1))
        If c > 90 Then c = 0
        bc_pattern$ = bc(c)
        
        'draw each bar
        For i = 1 To Len(bc_pattern$)
            Select Case Mid$(bc_pattern$, i, 1)
                Case " "
                    'space
                    obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
                    xpos = xpos + dw
                    
                Case "1"
                    'space
                    obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
                    xpos = xpos + dw
                    'line
                    obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &H0&, BF
                    xpos = xpos + dw
                
                Case "2"
                    'space
                    obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
                    xpos = xpos + dw
                    'wide line
                    obj.Line (xpos, Y1)-(xpos + 2 * dw, Y2), &H0&, BF
                    xpos = xpos + 2 * dw
            End Select
        Next
    Next
    
    '1 more space
    obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
    xpos = xpos + dw
    
    'final size and text
    obj.Width = (xpos + dw) * obj.Width / obj.ScaleWidth
    obj.CurrentX = (obj.ScaleWidth - tw) / 2
    obj.CurrentY = Y2 + 0.25 * th
    obj.Print bc_string
    
    'copy to clipboard
    obj.Picture = obj.Image
    Clipboard.Clear
    Clipboard.SetData obj.Image, 2

End Sub

Codigo Fuente del CommandButton:
'Impresion del Barcode
Private Sub cmdPrint_Click()

    Printer.PaintPicture Picture1, 100, 100
    Printer.EndDoc
End Sub

Codigo Fuente del TextBox:
'Escritura del barcode
Private Sub txtID_Change()

    Picture1.Height = Picture1.Height * (1.4 * 40 / Picture1.ScaleHeight)
    Picture1.FontSize = 8
    Call DrawBarcode(txtID, Picture1)
    Dim minwidth, pw, fw As Integer
    minwidth = 2 * txtID.Left + txtID.Width
    pw = 2 * Picture1.Left + Picture1.Width
    fw = minwidth
    If pw > fw Then fw = pw
    frmAgregarProd.Width = fw
    
End Sub

Cambiar la MAC digital de una PC con EtherChange [Windows]

9:30 0 Comments A+ a-


  * Primero que nada necesitaremos el EtherChange

Descarga oficial:
http://www.ntsecurity.nu/downloads/etherchange.exe
Mirror:
http://elgeek.com/files/etherchange.exe

    * Ahora se procede a ejecutar el programa, y tendremos algo asi:


 
1. Seleccionamos el adaptador de red correspondiente (placa de red).
2. Tipeamos “1? para especificar una nueva dirección ethernet, o sea MAC Address.
3. Escribimos la nueva MAC Addres sin comas, guiones o cualquier tipo de separadores.

Listo! Ahora solo resta reiniciar el ordenador para habilitar la nueva MAC Address.
 

Zapper para Windows [Batch]

9:30 0 Comments A+ a-


Cada vez que scanneamos, hacemos una intrusion, un ping  una pc o una ip, esta deja un registro en C:\Windows\System32\LogFiles
Los Zappers sirven para borrar esos registros o logs y asi que no se sospeche o no tengan formas de descubrirnos.

Mirando un poco el codigo de Panzer de IH. Decidi modificarlo un poco, ya que note que en Windows 7 no funcionaria.
Su Codigo es el siguiente:
@echo off
pushd %systemroot%\system32\logfiles
del /f /q *.evt
del /f /q *.log
exit
Lo que hace es dirigirse al directorio de logfiles y borrar todos los *.evt y *.log que hay en ella. Pero note que en Windows 7, crea directorios y dentro de estos directorio, archivos con extensiones *.txt, *.evl entre otras...

He optado por modificar un poco el codigo:
@echo off
rd /s /q %systemroot%\Windows\System32\LogFiles
md %systemroot%\Windows\System32\LogFiles
del /f /q %0
exit
Lo que hace este codigo es eliminar la carpeta LogFiles con todo su arbol (Directorios y Archivos) y la vuelve a crear vacia. Despues de hacer estas dos cosas, se autoelimina el zapper para evitar ser detectado.


Crackeador MD5 por Fuerza bruta

21:39 0 Comments A+ a-



Aca les dejo este crackeador por fuerza bruta. Funciona de maravilla aunque no es muy rapido por el lenguaje. Quizas les sirva como ejemplo.

Modo de uso:
Cracker.py -t md5 -h e10adc3949ba59abbe56e057f20f883e -w 1234567890 -a 9 -i 3 -v
Comandos:
-t: Tipo de Hash
-h: Hash a Crackear
-w: Teclas a usar 
-a: Maximo de Caracteres
-i: Minimo de Caracteres
-v: Modo Hacking
Codigo Fuente:
import sys , string , time
def main():
    "Main"
    title = "MD5 Cracker Brute Force"
    print "\n" + title.center(45) + "\n"
 
def usage():
    "Usage"
    print "[+] Ejemplo : Cracker.py -t md5 -h e10adc3949ba59abbe56e057f20f883e -w 1234567890 -a 9 -i 3 -v"
 
def usagelarge():
    "Usage Large"
    print "\n  Forma de Uso:"
    print "\n  [+]Ejemplo: Cracker.py -t md5 -h e10adc3949ba59abbe56e057f20f883e -w 1234567890 -a 9 -i 3 -v"
    print ""
    print "\t[Comandos]"
    print "\t   -t: Tipo de Hash"
    print "\t   -h: Hash a Crackear"
    print "\t   -w: Teclas a usar" 
    print "\t   -a: Maximo de Caracteres"
    print "\t   -i: Minimo de Caracteres"
    print "\t   -v: Modo Hacking\n"
 
def timer():
    "Time"
    now = time.localtime(time.time())
    return time.asctime(now)
 
if '__main__' == __name__ :
 
    if len(sys.argv) <= 5:
        main()
        usagelarge()
        sys.exit(1)
 
    hhash = words = maxw = minw = typeh = ""
    verbose = 0
 
    for arg in sys.argv[1:]:
        try:
            if arg.lower() == "-v" or arg.lower() == "-verbose":
                    verbose = 1
            if arg.lower() == "-h" or arg.lower() == "-hash":
                    hhash = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-a" or arg.lower() == "-max":
                    maxw = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-i" or arg.lower() == "-min":
                    minw = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-w" or arg.lower() == "-words":
                    words = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-t" or arg.lower() == "-type":
                    typeh = sys.argv[int(sys.argv[1:].index(arg))+2]
        except(IndexError):
            print "[+] Comandos Obligatorios -t(Tipo de Hash) -h(Hash) -w(Teclas) -a(Maximo de teclas) -a(Minimo de teclas)"
            usage()
            sys.exit(1)
 
    if minw == "" : minw = '1'
 
    main()
    for args in (typeh, hhash, words, maxw, minw):
        try:
            if args != "":
                if args == typeh :
                    if typeh.lower() != 'md5' or 'sha':
                        if typeh.lower() == "md5" :
                            typeh = '1'
                            print "[+] Tipo de Hash : MD5"
                        elif typeh.lower() == "sha" :
                            typeh = '2'
                            print "[+] Tipo de Hash : SHA1"
                    else:
                        print "[+] Tipo Invalido de Hash"
                        sys.exit(1)
                if args == hhash :
                    if typeh == '1' :
                        if len(hhash) == 32 :
                            print "[+] MD5 Hash : " + hhash
                        else:
                            print "[+] Tipo Invalido de Hash"
                            sys.exit(1)
                    if typeh == '2' :
                        if len(hhash) == 40 :
                            print "[+] SHA1 Hash : " + hhash
                        else:
                            print "[+] SHA1 Invalido"
                            sys.exit(1)
                if args == words :
                    print "[+] Teclas a usar : " + words
                if args == maxw :
                    if maxw.isdigit() != False :
                        if int(maxw) >= 15 :
                            print "[+] Maximo de Digitos : 15 : " + maxw
                            sys.exit(1)
                        else:
                            if int(maxw) > int(minw):
                                print "[+] Maximo de Digitos : " + maxw
                            else:
                                print "[+] El Maximo de Digitos debe ser mayor al Minimo de Digitos"
                                sys.exit(1)
                    else:
                        print "[+] Maximo de Teclas = Digitos"
                        sys.exit(1)
                if args == minw :
                        if minw.isdigit() != False :
                            if int(minw) < int(maxw) :
                                print "[+] Minimo de Digitos : " + minw
                            else:
                                print "[+] El minimo de Digitos debe ser menor al maximo de Digitos"
                                sys.exit(1)
                        else:
                            print "[+] Minimo de Teclas = Digitos"
                            sys.exit(1)
            else:
                print "[+] Comandos Obligatorios -t(Tipo de Hash) -h(Hash) -w(Teclas) -a(Maximo de teclas) -a(Minimo de teclas)"
                usage()
                sys.exit(1)
        except(ValueError):
            print "[+] Formato de comandos erroneo"
            sys.exit(1)
 
    f = open("CRACK.py",'w')
    f.write("#!/usr/bin/env python\n")
    if (typeh == '1') : f.write("import sys , md5 , string , time\n")
    if (typeh == '2') : f.write("import sys , sha , string , time\n")
    tab = '\t'
    f.write("def timer():\n")
    f.write(tab + "now = time.localtime(time.time())\n")
    f.write(tab + "return time.asctime(now)\n")
    f.write("def crackhash():\n")
 
    i = 0 ; inwords = ""
    f.write(tab + "hashh = '" + hhash.lower() +"'\n")
    f.write(tab + "try:\n")
 
    #print words
    for i in words:
        if i == str(words[int(len(words)-1)]) : 
            inwords += "'" + i + "'"
            break
        inwords += "'" + i + "',"
    #print inwords
 
    i = int(minw) ; iwords = "" ; a = 0
 
    while (int(i) != int(maxw) + 1) :
 
        for a in range(i):
            if int(i) != (int(a) + 1):
                iwords += "i" + str(i) + str(a) + " + "
            else:
                 iwords += "i" + str(i) + str(a)
 
            data = (int(a + 2) * tab + "for i" + str(i) + str(a) + " in (" + inwords + "):\n")
            f.write(data)
 
        f.write(int(i + 2) * tab + "word = '' ; value = ''\n")
        f.write(int(i + 2) * tab + "word = " + iwords + "\n")
 
        if typeh == '1' : f.write(int(i + 2) * tab + "hash = md5.new()\n")
 
        if typeh == '2' : f.write(int(i + 2) * tab + "hash = sha.new()\n")
 
        f.write(int(i + 2) * tab + "hash.update(str(word))\n")
        f.write(int(i + 2) * tab + "value = hash.hexdigest()\n") 
        if verbose == 1 : f.write(int(i + 2) * tab + "print " + iwords + ' + " : " + str(value)\n')
        f.write(int(i + 2) * tab + "if str(hashh) == str(value):\n")
        f.write(int(i + 3) * tab + "raise Exception\n")
        iwords = ""
        i += 1
 
    f.write(tab + "except(Exception):")
    f.write('\n'+ 2 * tab + "print '********************  Hash Crackeado ' + 20 * '*'")
    f.write('\n' + 2 * tab + "print '[+] HASH :', hashh")
    f.write('\n' + 2 * tab + "print '[+] PASS :', str(word)")
    f.write('\n' + 2 * tab + "print '[+] Hora de finalizacion :', timer()")
    f.write('\n' + 2 * tab + "sys.exit(1)")
    f.write('\n' + tab + "except(KeyboardInterrupt):")
    f.write('\n' + 2 * tab + "print '[+] Process Ended ',timer()")
    f.write('\n' + 2 * tab + "sys.exit(1)")
    f.write("\ncrackhash()")
    f.close()
 
    print '[+] Hora de inicio : ', timer()
 
    import CRACK
    CRACK.crackhash()

¿Todos los cursos son con Backtrack o Kali? No.. Mejor aprendé!

21:30 0 Comments A+ a-


Esta entrada la realize por mas que razones obvias tras la primera entrada que es ¿Cual Backtrack, Kali, Bugtraq,Backbox o BlackArch y otras hierbas para aprender esta en mi blog comenzo el trolling y ataques de capa 9.


Ahora si señores ando medio, Shaolin xD por decirlo porque veo que algunas personas aun tienen ese pensamiento de que si el se lanza al pozo yo también lo hago, es decir con todo respeto no quiero que se tomen de malas con mi persona, mediocridad nivel máximo al creer de esa manera.

Los que siguen en el blog estoy seguro que vieron la entrada de ayer que era ¿Cual Backtrack, Kali, Bugtraq,Backbox o BlackArch y otras hierbas para aprender hacking ? si no la vieron los invito para que la lean :), y de ahí saquen ustedes mismo sus propias conclusiones como también comenten en esta entrada si no les agrada, todo comentario es aceptable. El motivo de esa entrada fue para dar a conocer mi punto de vista y sorprendetemente vino el comentario de una persona con el nombre de lorenzo el cual pone lo siguiente en la entrada:



Si correcto todos los cursos, tutoriales las hacen con Kali o Backtrack como lo vean pero eso no quiere decir que no se pueda trabajar o hacer lo mismo en otra distribución linux,  y que mas hasta me atrevo a decir desde un Windows o MAC no sera con las mismas herramientas en estos dos últimos pero todo es fácilmente viable y moldeable para ser usado a nuestra conveniencia.

El termino de parásito, me refiero a tener todo mascado servido y ser flojos, esto no va de esa manera porque no aprender nosotros mismos a hacerlo, dar la vuelta a la rueda y hacer otra receta, como se basa el software libre modificar a tu antojo para que cubra tus necesidades.

Todos hacen uso de estas distribuciones en cursos, certificaciones y demás me dirá mas que uno es cierto, pero porque lo hacen ? fácil y simple la respuesta desde mi punto de vista, un ejemplo, cuando doy capacitaciones de seguridad, prefería usar Backtrack por la comodidad de las herramientas que ya vienen configuradas, precargadas solo era hacer algunos retoques, si se desea que trabaje de alguna manera especial, luego de ello ya listo para hacerlo y no perder el tiempo en configuraciones. Esta es la razón que se hace uso de ello pero si deseamos aprender mejor hacerlo todo nosotros mismos.

Ahora en este punto les dejo a su criterio, desean tener una mejora continua en sus conocimientos, o quedarse varados con lo que ven en cursos y demas?


Cada uno decide que hacer, y mejor ver ambos lados de la cara de la moneda, con la entrada no quiero decir que no son buenas una u otra solo que mejor aprender y experimentar.


¿Qué opinas al respecto?


Utilizando la herramienta Dmitry

9:30 0 Comments A+ a-


Primero abriremos la Terminal y colocaremos lo siguiente.

Dmitry y daremos enter y nos aparecerá las siguientes instrucciones.

Foto:



Okey entonces les traducire las intrucciones a español.

Traducción.

-o Guardar salida en% host.txt o para presentar el archivo especificado por-o
-i Realice una búsqueda whois en la dirección IP de un host
-w Realizar una búsqueda whois del nombre de dominio de un host
-n Recuperar información Netcraft.com en un host
-s Realizar una búsqueda de posibles subdominios
-e Realice una búsqueda de posibles direcciones de correo electrónico
-p Realice un puerto TCP escanear en un host
*-F Realice un puerto TCP escanear en un host que muestra informes de salida de los puertos filtrados
*-B Leer en el estandarte recibido desde el puerto escaneada
*-T 0-9 Ajuste el TTL en segundos al escanear un puerto TCP (por defecto 2)

Bueno entonces comenzemos como dice el comando "-o" guarda la información en archivo formato ".txt" entones mi web victima sería underc0de ya qué es el team en que estoy unido, entonces pondriamos lo siguiente.

dmitry -o www.underc0de.org

Foto:



Y nos aparecerá más información hay solo es un resumen de la información recolectada y si quieren ver la información recolectada estará guardada en Home Folder y la carpeta "ROOT" del sistema, okey entonces ahora pondremos el comando "-i" para que realice una busqueda del WHOIS en la dirección Ip de un host, entones colocariamos lo siguiente.

dmitry -i www.underc0de.org

Foto:



Después de sacar la dirección Ip en un host ahora pondremos el comando "-w" para realizar una búsqueda whois del nombre de dominio de un host, entonces pondriamos lo siguiente.

dmitry -w www.underc0de.org

Foto:



Okey ahora después de sacar realizar una búsqueda whois del nombre de dominio de un host , pondremos lo siguiente para recuperar información Netcraft.com en un host con el comando "-n" y pondriamos lo siguiente.

dmitry -n www.underc0de.org

Foto:



Como verán no tiene informacion netcraft, algunos se preguntarán.

¿Qué es Netcraft?

 Netcraft es una empresa mundialmente que ofrece alojamiento de servidores, ejemplo para crear foros,websites,etc.

Okey ahora de sacar la información Netcraft el comando "-s" para realizar una busqueda de los subdominios, entones pondremos lo siguiente.

dmitry -s www.underc0de.org

Foto:



Y como verán no hay subdominios alojados en el dominio pero si hacer este escaneo en google.com si les saldrá subdominios alojados, okey ahora después que escanemos posibles subdominios alojados en la web haremos lo siguiente para realizar una búsqueda de direcciones de correo electrónico en la website, entonces pondriamos lo siguiente con el comando "-e"

dmitry -e www.underc0de.org

Foto:



Y como verán no hay correos electrónicos posibles en la website alojada es algo raro por que he probado en otras webs y si hay pero bueno, ahora haremos lo siguiente con el comando "-p" para que realice un puerto TCP escanear en un host, entonces pondremos lo siguiente, este comando busca más y se basa en analizar los puertos que tienen abiertos.

dmitry -p www.underc0de.org

Foto:



Y como verán ya que el proceso se demora en escanear los puertos

Aprendiendo a escanear puertos UDP

9:30 0 Comments A+ a-


Durante las auditorías de seguridad, se suelen realizar escaneos sobre los puertos TCP en búsqueda de aquellos que están abiertos para explotar algún tipo de vulnerabilidad. Sin embargo, es una mala práctica común dejar fuera de consideración del análisis los puertos UDP durante los penetration test, siendo que en muchos casos los mismos aportan información relevante e incluso pueden explotarse en ciertas situaciones.

¿Qué es un puerto UDP?

User Datagram Protocol o UDP se basa en el intercambio de datagramas. A diferencia de los paquetes TCP no posee confirmación de recepción o de entrega.

Algunos de los protocolos más conocidos que utilizan paquetes UDP son DNS, DHCP, entre otras alternativas.

Consideraciones de puertos UDP sobre un Penetration Test

Nmap posee la capacidad de analizar puertos UDP de forma remota. Para llevar a cabo esta tarea, se debe especificar el parámetro –sU. Es importante aclarar de qué forma trabaja Nmap con respecto a este tipo de puertos.

Los estados posibles que Nmap vincula a los puertos UDP son:

  • open: Nmap indica este estado cuando existe una respuesta desde el sistema objetivo. No es una situación usual, ya que por lo general el target no responde.
  • open/filtered: Esta ambigüedad se debe a que en ciertos casos no es posible validar el estado del puerto. Tal como se indicó anteriormente, debido a que este protocolo no posee alerta de recepción o envío, puede darse el caso en que un puerto se encuentre abierto pero no responda a una determinada cadena de entrada. Nmap envía el paquete en blanco, y en ciertos casos, el servicio detrás del puerto UDP de interés puede tomar los datos de entrada como inválidos y no responder. En el caso de que el puerto se encuentre filtrado por un firewall o un IDS/IPS, el comportamiento puede ser similar. De esta forma, Nmap responde con este tipo de respuesta que puede resultar ambigua.
  • closed: Nmap indica este estado cuando existe un error del tipo “ICMP port unreachable error”. Esto es un error de tipo 3. En este caso es posible afirmar que el puerto se encuentra cerrado.
  • filtered: Este estado corresponde a algún tipo de error diferente al anterior.

Es importante comprender la diferencia existente entre cada uno de ellos. Quizá el estado que requiere mayor atención es open/filtered. Tal como se explicó anteriormente, esto se debe a que Nmap no es capaz de determinar si el puerto se encuentra abierto o filtrado debido a la ausencia de respuesta.

Definiendo un puerto UDP open/filtered

En caso de querer obtener más información sobre un puerto que ha sido catalogado como open/filtered, existe una alternativa. Debido a que por defecto Nmap envía los paquetes UDP en blanco para determinar si el puerto se encuentra abierto, es posible obtener, en algunos casos, más información forzando la búsqueda de la versión del servicio.

En la siguiente imagen puede observarse la respuesta de Nmap a partir de los 1000 puertos más comunes (parámetro –top-ports).


Se realizó nuevamente el escaneo, pero esta vez especificando el parámetro –sUV para buscar la versión del servicio a la escucha del puerto específico. De esta manera, Nmap realiza pruebas específicas sobre aquellos puertos que fueron identificados como “open/filtered” u “open”.


Esta técnica no siempre es determinante pero puede ayudar a obtener mejores resultados. Sin embargo, en este caso, vemos como a partir de la del parámetro -sUV pudo determinar que 944 puertos estaban cerrados contra 991 solo con el parámetro -sU. Esto mismo podría haber ocurrido con un puerto open/filtered donde, luego del análisis más profundo se pueda determinar que en realidad estaba abierto. De todas formas, es importante resaltar que la penalidad de este tipo de análisis se deriva en el tiempo, donde el segundo ejemplo demoró casi el doble del tiempo con respecto al primero.

DNS SPOOFING con Social Engineering Toolkit

9:30 0 Comments A+ a-


Social Engineering Toolkit se basa en muchos módulos y menús es una herramienta echa por "Kevin David Mitnick" un cracker buscado mundialmente buscado por el F.B.I a finales de los años 90 (1995), Social Engineering Toolkit se basa en las siguientes herramientas.

- Clonación de Websites.(NO-IP)
- Vulnerabilidades en Sistemas Operativos.

Bueno para decir la verdad esto son solos los menús que me se pero seguire leyendo sobre esta increible herramienta. En este módulo que usaremos se basa en la suplantación de dominios "NO-IP" (DNS) o viceversa, bueno comenzemos, primero tendríamos que abrir la herramienta Social Engineering Toolkit entonces la ubicación sería la seguiente.

BackTrack >> Explotation Tools >> Social Engineering Tools >> Social Engineering Toolkit >> set

O colocariamos lo siguiente en la terminal:

cd /pentest/exploits/set/
./set


Foto:



Y listo ya tendríamos la consola de Social Engineering Toolkit abierto ahora nos aparecería los siguientes menús.

Foto:




Entonces elegiriamos el Menú 1, entonces pondríamos el número "1" sin las comillas y le daríamos enter y nos aparecerán otros menús.

Foto:



Elegiríamos el menu número "2" sin las comillas y daríamos enter y nos aparecerá otros menus.

Foto:



Entonces elegiríamos el menu 3 y le daríamos enter y nos aparecerá los siguientes menus.

Foto:



Elegiríamos el menu 2 y nos aparecerá lo siguiente para comenzar a clonar un sitio web.

Foto:




Y nos dice que pongamos nuestra dirección Ip, como verán colocaremos nuestra Dirección Ip Local y no dirección Ip Pública y colocaríamos nuestra Dirección Ip y daríamos enter.

Foto:



Entonces clonarimos la website de facebook.com y le daríamos enter y nos quedaría así.

Foto:




Y listo como verán se ha inciado la clonación "OJO" este proceso solo sirve para los demás servidores que estan conectados a la misma red, entonces ahora haríamos lo siguiente, abririamos otra terminal o pestaña como ustedes quierán y colocaríamos lo siguiente:

gedit /usr/local/share/ettercap/etter.dns y le daríamos enter.

Foto:




Y como verán crearemos los siguientes parametros para ingresar el dominio y dirección ip.

Dominio.com A IP
*.Dominio A IP
www.dominio.com PTR IP


Donde dice dominio es obvio que hay pondremos el dominio que clonamos y la dirección Ip y daríamos a guardar, okey después de eso colocariamos para finalizar en la terminal:

ettercap -T -q -i Adaptador de red -P dns_spoof -M arp // //

Y daríamos enter para finalizar, ojo donde dice "Adaptador de red" pondriamos el interface de donde estamos conectados una red Local o red Wi-Fi.

Foto:



Y listo ahora colocaríamos en la URL "facebook.com" o nuestra dirección Ip que hemos colocado. sin las comillas y pondríamos nuestro correo y contraseña pero como verán colocare una contraseña falsa.

Foto:



Y como verán nuestra victima se ha echo login con su correo electrónico y contraseña, ojo también podremos clonar otros sitio web.