2. Scripting Para Pentesters :
Tercer Grado de Primaria
Walter Cuestas Agramonte
C)PTE, C|EH, GPEN
wcuestas@open-sec.com
http://ehopen-sec.blogspot.com
http://www.open-sec.com
www.Open-Sec.com
3. Quiénes somos ?
•Un Equipo de Consultores con experiencia en
organizaciones corporativas, estatales y privadas en :
●
Ethical Hacking
●
Análisis de Incidentes de Seguridad
●
Computación Forense
●
Cobertura : Perú, Ecuador, Panamá, Estados Unidos.
www.Open-Sec.com
6. La educación “escolar”
• Pre-escolar : networking, base de datos, sistemas operativos
• Primaria :
• 1-Uso de Google, servicios DNS, nmap, Nessus
• 2-Uso de herramientas especializadas en vulnerabilidades web
• 3-Desarrollo de scripts
• 4-Hacking de Wi-Fi y VoIP
• 5-Corrección y personalización de herramientas de hacking
• 6-Desarrollo de exploits
• Secundaria :
• 1-Desarrollo de exploits evadiendo protecciones
• 2-Desarrollo de exploits multiplataforma
• 3-Ingeniería reversa para desarrollar exploits
• 4-Desarrollo de 0days
• 5-Ejecución de ataques APT
www.Open-Sec.com
8. Empecemos con algo simple en
la LAN : ping y direcciones MAC
#|/bin/bash She bang
fping -g $1 $2 > fping_lista.txt 2>/dev/null Parámetros
grep "is alive" fping_lista.txt > activos.txt
echo "Lista de Direcciones IP Activas"
echo "-------------------------------"
for host in `cat activos.txt | cut -d " " -f 1`
do
echo $host Loop “for”
done
arp -an | grep ether
www.Open-Sec.com
9. Empecemos con algo simple en
la LAN : ping y direcciones MAC
fping -g $1 $2 > fping_lista.txt 2>/dev/null
Salida y Error Estándar :
– 0 Entrada
– 1 Salida
– 2 Error
Parámetros :
– $0 el programa mismo
– Los demás, del $1 en adelante
www.Open-Sec.com
10. Empecemos con algo simple en
la LAN : ping y direcciones MAC
for host in `cat activos.txt | cut -d " "
-f 1`
• For basado en una lista
• La lista se construye a partir de las entradas
de un archivo, en este caso...
• Fijarse en las tíldes invertidas `
– Se ejecuta todo lo que esta dentro de
las tíldes invertidas
– Eso devuelve la lista que requiere el For
www.Open-Sec.com
11. Pasemos a MS Windows
• Acabamos de penetrar un host MS Windows y veo
que puedo alcanzar otros hosts de la red
– Quiero escanear puertos ?
• Instalo nmap ?
• Puedo usar copy con ?
• Puedo mandarlo con msf !
– En realidad es acerca de scripting, así que
veamos uno que escanea puertos
www.Open-Sec.com
12. Loop For + ftp = port_ scanner.bat
@echo off
• for /L %%p in (20,1,82) do echo
Chequeando Puerto %%p: >> puertos.txt
& echo open 192.168.1.171 %%p >
comftp.txt & echo quit >> comftp.txt &
echo quit >> comftp.txt & ftp
-s:comftp.txt 2>> puertos.txt
• Wtf ?!
www.Open-Sec.com
13. Loop For + ftp = port_ scanner.bat
for /L %%p in (20,1,82) do ....
• Loop basado en contador (/L)
• (inicio, incremento, fin)
• %%p ira tomando los valores : el contador
www.Open-Sec.com
14. Loop For + ftp = port_ scanner.bat
echo Chequeando Puerto %%p: >> puertos.txt & echo open
192.168.1.171 %%p > comftp.txt & echo quit >> comftp.txt & echo
quit >> comftp.txt & ftp -s:comftp.txt 2>> puertos.txt
• & ejecuta comando tras comando
• En puertos.txt estará el reporte
• En comftp.txt estarán las instrucciones que usará ftp para INTENTAR abrir una
conexión
• (doble quit para prevenir servicios que reciben el comando, lo encuentran
válido o errado y se quedan esperando otro comando)
open 192.168.1.171 28
comftp.txt quit
quit
www.Open-Sec.com
15. Un poco de shell potente :
Powershell
• Viene en MS Windows 7 y MS Windows 2008 y posteriores...
• Se requiere por lo menos MS Windows XP SP2
• Set-ExecutionPolicy RemoteSigned
– Por default en Restricted
• Un ejemplo :
$whoami = $env:username
write-output "El usuario con el que esta ejecutando es $whoami"
$processes = Get-Process
switch -regex ($processes){
"winword" {write-output "Microsoft Word corriendo"}
"explorer" {write-output "Explorer corriendo"}
"firefox" {write-output "Firefox corriendo"}
}
www.Open-Sec.com
16. Un poco de Python...en la
búsqueda del robots.txt
• Primero el módulo que hace la chamba : robotparser
• Luego, la estructura que devuelve :
allowance path
Rule line Allow=1 /...../...../..... robot.entries
Disallow=0
www.Open-Sec.com
17. Un poco de Python...en la
búsqueda del robots.txt
#!/usr/bin/python
import robotparser
webs = ['www.google.com',www.yahoo.com']
def getDisallow(web):
rutas = []
robot = robotparser.RobotFileParser()
robot.set_url("http://"+web+"/robots.txt")
robot.read()
for cadaweb in robot.entries:
for cadalinea in cadaweb.rulelines:
not cadalinea.allowance and rutas.append(cadalinea.path)
return set(rutas)
for web in webs:
print "Las rutas que no quieren que veas de " + web
print "t" + "nt".join(getDisallow(web))
www.Open-Sec.com
18. Servidores y Clientes : Usemos Ruby
require 'socket' # Invoca a la libreria socket
hostname = 'localhost'
port = 2000
s = TCPSocket.open(hostname, port) #Conexion a servidor
while line = s.gets # Lee del socket
puts line.chomp # Imprime lo leido eliminando CR+LF
end
s.close # Cierra el socket cliente
require 'socket' # Invoca a la librerÃa socket
server = TCPServer.open(2000) # Abre un socket en el puerto 2000
loop { # El servidor correra eternamente
client = server.accept # Espera por conexion cliente
client.puts(Time.now.ctime) # Envia la hora al cliente
client.puts "Closing the connection. Bye!"
client.close # Desconecta al cliente
}
www.Open-Sec.com
19. Más Ruby : Pidamos por HTTP
require 'net/http'
def obtenerHeader(web,puerto = nil)
puerto = puerto || 80
Net::HTTP .start(web.to_s,puerto) do |http|
handler = http.head('/')
return [handler['server'].to_s ,handler['x-powered-by'].to_s ,handler['last-
modified'].to_s]
end
return [nil,nil]
end
if ARGV.size <= 0 || ARGV.size > 2
print "Uso: #{$0} Web [Puerto]n"
exit
end
server, modulos, ultima_mod = obtenerHeader(ARGV[0],ARGV[1])
print "Software de Web : #{server}nModulos Enlazados : #{modulos}nUltima
Modificacion : #{ultima_mod}n"
www.Open-Sec.com
21. BENEFICIOS DEL CURSO
Aquellos que finalicen satisfactoriamente el curso de Certified ) Penetration Testing Engineer
habrán obtenido el conocimiento de la seguridad en el mundo real que les permitirá reconocer
vulnerabilidades, explotar las debilidades en los sistemas y ayudar a protegerse de las amenazas.
Los graduados del curso habrán aprendido el arte del Ethical Hacking, pero, con el nivel profesional
(Penetration Testing).
Duración: 5 días
Pre requisitos:
Examen de Certificación : Un mínimo de 12 meses de experiencia en redes
CPTE – Certified Pen Testing Engineer™ Conocimientos técnicos de TCP/IP
CEH – Certified Ethical Hacker™ Conocimiento de software de Microsoft
CPEH – Certified Professional Hacker™ Network+, Microsoft, Security+
Conocimiento básico de Linux es esencial
www.Open-Sec.com
22. RESUMEN DEL CURSO
El curso de CPTEngineer presenta
la información basado en 5
Elementos Clave del Pen Testing :
Obtención de Información,
Escaneo, Enumeración,
Explotación y Reporte
www.Open-Sec.com
24. Exámenes Mile2
1.Descripción del examen
a. Son 100 preguntas extraídas de un banco grande
de preguntas y respuestas que son seleccionadas
en forma aleatoria, cada examen es diferente.
b. 2 horas de duración
c. Se requiere un 75% de aprobación para alcanzar
el nivel de certificación.
d. $250 US por examen
2.Precio para retomar el examen $150 US
3.Los estudiantes pueden comprar los exámenes a
través de la tienda de mile2.com
4.Los exámenes se toman en línea después de clases
o cuando lo solicite el estudiante.
5.Los exámenes en línea también están disponibles
para:
C)PTE - C)ISSO - C)PTC - C)DFE - C)SWAE - C)SLO -
C)IHE
www.Open-Sec.com