domingo, 31 de agosto de 2008

Fuerza Bruta para Obtener Passwords en Windows

Para obtener el password de una cuenta Administrador remotamente podriamos realizar lo siguiente en la linea de comandos (cmd.exe):

C:\>FOR /F "tokens=1,2*" %i in (users.txt) do net use \\Ip_servidor\ipc$ %i /u:%j

Tenga en cuenta que luego debe crear un archivo de texto denominado users.txt el cual debe contener el siguiente formato:

Passwords Usuarios
---------------------------
contraseñas Administrador
unpass Administrador
admin Administrador
password Administrador
2dm1n Administrador

En el archivo podremos todas las combinaciones que creemos posible que puedan ser, si tenemos tiempo podremos poner todas las combinaciones posibles de letras de por ejemplo 7 caracteres (estas combinaciones podremos lograrlas con algun programa que genere todas las posibles combinaciones de palabras de 7 caracteres).

Obviamente si nos encontramos con buenos administradores, eso podremos hacerlo solamente 3 o 5 veces, o segun la cantidad de intentos que tenga configurado en sus politicas de dominio.

Esto ultimo tiene su ventaja como desventaja, debido a que el administrador de los servidores puede evitar que obtengan passwords de sus usuarios, pero si un atacante posee todos los usuarios del dominio podria a llegar a hacer una forma de DoS (Denegacion de Servicio), debido a que si realiza dicho procedimiento por cada usuario 3 veces lograria bloquear todas las cuentas de un dominio. Esto le daria un gran dolor de cabeza a dicho administrador.

viernes, 15 de agosto de 2008

Diferencia entre 2 archivos con Vi


Esto lo hago con dos archivos del registro de windows, es decir en archivo1.reg guardo cambios antes de hacer alguna modificacion. Luego hago la modificacion, por ejemplo en algun servicio, luego creo un backup del regedit llamandolo archivo2.reg y lo comparo de la siguiente forma para saber que claves modifico:

vi -d archivo1.reg archivo2.reg

A continuacion les dejo una screen del comando ejecutado, verán que esta la pantalla dividida en dos con los dos archivos abiertos. Ademas muestra la diferencia con distinto color.

En el caso del screen lo que muestra es como deshabilitar o habilitar un servicio en Windows Xp en la clave veran que la diferencia de los archivos es "2" y "4". El "4" indica que el servicio está deshabilitado y el "2" indica que está habilitado.

Si quiero deshabilitar un servicio, en vez de ir a services.msc y deshabilitarlo puedo modificar el 2 por el 4.

Ejemplo:

Inicio -> Ejecutar -> regedit
Clave:
MiPC -> HKEY_LOCAL_MACHINE -> SYSTEM -> ControlSeet001 -> Services -> TlntSvr -> sobre el panel derecho del regedir vemos una clave llamada "Start" la cual le podremos poner el "2" o "4" como explicamos previamente para deshabilitar/habilitar el servicio de Telnet. Si queremos ponerlo en Manual, simplemente "3".

Una vez habilitado el servicio, le damos el siguiente comando para iniciarlo:
"net start Telnet"
o para detenerlo:
"net stop Telnet"

116 Comando para Inicio -> Ejecutar

1. Accessibility Controls - access.cpl
2. Accessibility Wizard - accwiz
3. Add Hardware Wizard - hdwwiz.cpl
4. Add/Remove Programs - appwiz.cpl
5. Administrative Tools - control admintools
6. Automatic Updates - wuaucpl.cpl
7. Bluetooth Transfer Wizard - fsquirt
8. Calculator - calc
9. Certificate Manager - certmgr.msc
10. Character Map - charmap
11. Check Disk Utility - chkdsk
12. Clipboard Viewer - clipbrd
13. Command Prompt - cmd
14. Component Services - dcomcnfg
15. Computer Management - compmgmt.msc
16. Control Panel - control
17. Date and Time Properties - timedate.cpl
18. DDE Shares - ddeshare
19. Device Manager - devmgmt.msc
20. Direct X Troubleshooter - dxdiag
21. Disk Cleanup Utility - cleanmgr
22. Disk Defragment - dfrg.msc
23. Disk Management - diskmgmt.msc
24. Disk Partition Manager - diskpart
25. Display Properties - control desktop
26. Display Properties - desk.cpl
27. Dr. Watson System Troubleshooting Utility - drwtsn32
28. Driver Verifier Utility - verifier
29. Event Viewer - eventvwr.msc
30. Files and Settings Transfer Tool - migwiz
31. File Signature Verification Tool - sigverif
32. Findfast - findfast.cpl
33. Firefox - firefox
34. Folders Properties - control folders
35. Fonts - control fonts
36. Fonts Folder - fonts
37. Free Cell Card Game - freecell
38. Game Controllers - joy.cpl
39. Group Policy Editor (for xp professional) - gpedit.msc
40. Hearts Card Game - mshearts
41. Help and Support - helpctr
42. HyperTerminal - hypertrm
43. Iexpress Wizard - iexpress
44. Indexing Service - ciadv.msc
45. Internet Connection Wizard - icwconn1
46. Internet Explorer - iexplore
47. Internet Properties - inetcpl.cpl
48. Keyboard Properties - control keyboard
49. Local Security Settings - secpol.msc
50. Local Users and Groups - lusrmgr.msc
51. Logs You Out Of Windows - logoff
52. Malicious Software Removal Tool - mrt
53. Microsoft Chat - winchat
54. Microsoft Movie Maker - moviemk
55. Microsoft Paint - mspaint
56. Microsoft Syncronization Tool - mobsync
57. Minesweeper Game - winmine
58. Mouse Properties - control mouse
59. Mouse Properties - main.cpl
60. Netmeeting - conf
61. Network Connections - control netconnections
62. Network Connections - ncpa.cpl
63. Network Setup Wizard - netsetup.cpl
64. Notepad - notepad
65. Object Packager - packager
66. ODBC Data Source Administrator - odbccp32.cpl
67. On Screen Keyboard - osk
68. Outlook Express - msimn
69. Paint - pbrush
70. Password Properties - password.cpl
71. Performance Monitor - perfmon.msc
72. Performance Monitor - perfmon
73. Phone and Modem Options - telephon.cpl
74. Phone Dialer - dialer
75. Pinball Game - pinball
76. Power Configuration - powercfg.cpl
77. Printers and Faxes - control printers
78. Printers Folder - printers
79. Regional Settings - intl.cpl
80. Registry Editor - regedit
81. Registry Editor - regedit32
82. Remote Access Phonebook - rasphone
83. Remote Desktop - mstsc
84. Removable Storage - ntmsmgr.msc
85. Removable Storage Operator Requests - ntmsoprq.msc
86. Resultant Set of Policy (for xp professional) - rsop.msc
87. Scanners and Cameras - sticpl.cpl
88. Scheduled Tasks - control schedtasks
89. Security Center - wscui.cpl
90. Services - services.msc
91. Shared Folders - fsmgmt.msc
92. Shuts Down Windows - shutdown
93. Sounds and Audio - mmsys.cpl
94. Spider Solitare Card Game - spider
95. SQL Client Configuration - cliconfg
96. System Configuration Editor - sysedit
97. System Configuration Utility - msconfig
98. System Information - msinfo32
99. System Properties - sysdm.cpl
100. Task Manager - taskmgr
101. TCP Tester - tcptest
102. Telnet Client - telnet
103. User Account Management - nusrmgr.cpl
104. Utility Manager - utilman
105. Windows Address Book - wab
106. Windows Address Book Import Utility - wabmig
107. Windows Explorer - explorer
108. Windows Firewall - firewall.cpl
109. Windows Magnifier - magnify
110. Windows Management Infrastructure - wmimgmt.msc
111. Windows Media Player - wmplayer
112. Windows Messenger - msmsgs
113. Windows System Security Tool - syskey
114. Windows Update Launches - wupdmgr
115. Windows Version - winver
116. Wordpad - write

martes, 5 de agosto de 2008

PortSentry (detecta y bloquea escaneos de puertos)

PortSentry:
-----------

Monitorea escaneos de puertos que hacen hacia nuestras pc.
Incluye barridos ocultos.

Es una aplicacion muy potente, que junto con iptables podria evitar ataques a nuestros servidores.

Cuando escanean los puertos de nuestros servidores no quiere decir que nos esten atacando, simplemente estan investigando que servicios proveen nuestros servers. Pero un escaneo de puertos no es nada bueno.

Utilizamos PortSentry de la siguiente manera:
---------------------------------------------
* Ponemos un puerto a la escucha.
* Monitoreamos ese puerto, esperando que lo escaneen.
* Actuamos sobre la ip que nos escanea.


INSTALACION:
------------

#apt-get install portsentry

CONFIGURACION:
--------------

Trabaja de dos formas --> SIMPLE
\> STHEAL

SIMPLE - pongo puertos a la la escucha, para ver que sean escaneados. No es recomendado poner en escucha puertos que realmente estemos usando.

STHEAL - se especifica un puerto y portsentry pone a la escucha todos los que esten debajo de el especificado, sin tener en cuenta los que se utilizan realmente.

Yo pongo el puerto de sshd en otro puerto que el 22, es una practica comun para evitar generar muchos logs. En mi caso lo pongo en el 2222

#vim /etc/ssh/sshd_config
Reemplazo la linea:
Port 22
por la linea:
Port 2222

#/etc/init.d/ssh restart

Ahora dejamos el 22 libre para ponerlo a la escucha con portsentry para auditar los intentos de logueo.

Editamos el archivo de portsentry:

#cp /etc/portsentry/portsentry.conf /etc/portsentry/portsentry.conf.old
#vim /etc/portsentry/portsentry.conf

#######################
# Port Configurations #
#######################

# Use these for just bare-bones (para banear)
TCP_PORTS="22"


###########################################
# Advanced Stealth Scan Detection Options #
###########################################

ADVANCED_PORTS_TCP=”10244? #<– Monitorizará todos los puertos que no estén en uso, por debajo del 1024. Y, cual es el único puerto que está por debajo del 1024, que no se esté utilizando y que tenga acceso hasta la máquina a traves de la red? solo el 22 :-)
#ADVANCED_PORTS_UDP=”10244? #<– Esto lo tengo comentado, porque el router me para todas las conexiones UDP, es decir, que no llegarán a la máquina.

Dejamos el resto de la sección comentada, no incluimos puertos a ignorar, ya que Portsentry detectará automáticamente cuales están siendo utilizados por servicios legítimos y los obviará.

######################
# Configuration Files#
######################

# Hosts to ignore
IGNORE_FILE=”/etc/portsentry/portsentry.ignore”
# Hosts that have been denied (running history)
HISTORY_FILE=”/var/lib/portsentry/portsentry.history”
# Hosts that have been denied this session only (temporary until next restart)
BLOCKED_FILE=”/var/lib/portsentry/portsentry.blocked”

IGNORE_FILE –> Este fichero es el que utiliza Portsentry para su WhiteList, es decir, las IPs que están legitimadas para escanear puertos sin que tome medidas. Este fichero no se edita, si queremos añadir IPs a la WhiteList, lo hacemos editando el fichero /etc/portsentry/portsentry.ignore.static

HISTORY_FILE –> Aquí es donde Portenstry va guardando la gente que ha detectado escaneando nuestros puertos.

BLOCKED_FILE –> Aquí Portsentry guarda las IPs que han sido bloqueadas.

##############################
# Misc. Configuration Options#
##############################

RESOLVE_HOST = “00? # Esta opción la dejamos a 0. Lo que hace esto es resolver la dirección de las IPs atacantes, no nos interesa por varios motivos. Uno, es que ya hemos dicho que la gente utiliza máquinas que no son suyas, por lo tanto el resolver su dirección no nos va aportar nada y estamos haciendo un gasto de ancho de banda que esta gente no se merece, amén que si estamos siendo víctimas de un DDoS bien distribuido, pues seguramente al final consigamos hacer tanto gasto de ancho de banda resolviendo direcciones que acabaremos tirando nuestra máquina.

##################
# Ignore Options #
##################

BLOCK_UDP=”1"
BLOCK_TCP=”1"

Aquí indicamos las medidas a tomar con los atacantes.
0 –> No hace nada, solo lo notifica (en /var/log/syslog)
1 –> Bloquea las conexiones (verificar route -n)
2 –> Ejecuta un comando externo a Portsentry, por ejemplo, podemos utilizar esto para añadir una regla a iptables dropando todas las conexiones de la IP agresora.

###################
# Dropping Routes:#
###################

KILL_ROUTE=”/sbin/route add -host $TARGET$ reject”

Aqui, lo que hacemos es añadir la IP atacante a la tabla route de nuestra máquina, denegando todas sus conexiones, es tremendamente eficaz.
Podemos ver las reglas route de nuestra máquina ejecutando route -n
Si por error, haciendo pruebas, nos incluye una dirección IP que no queremos que esté ahí, para quitarla se hace

#route del -host reject

###############
# TCP Wrappers#
###############
###################
# External Command#
###################

Aquí es donde metemos los comandos que ejecutaremos externos a Porsentry si elegimos la opción 2 en las ignore Options. Por ejemplo, si tenemos soporte para iptables en nuestra máquina, añadimos una regla para que el firewall pare todas las conexiones del cabroncete.

KILL_RUN_CMD=”/sbin/iptables -A INPUT -s $TARGET -j DROP”
KILL_HOSTS_DENY=”ALL: $TARGET$ : DENY”

Aquí, añadimos la IP agresora a nuestro /etc/hosts.deny … una barrera más

###################
# External Command#
###################

Aquí es donde metemos los comandos que ejecutaremos externos a Porsentry si elegimos la opción 2 en las ignore Options. Por ejemplo, si tenemos soporte para iptables en nuestra máquina, añadimos una regla para que el firewall pare todas las conexiones del cabroncete.

KILL_RUN_CMD=”/sbin/iptables -A INPUT -s $TARGET -j DROP”

#####################
# Scan trigger value#
#####################

SCAN_TRIGGER=”00?

Aquí indicamos el número de puertos que han de ser escaneados para que el Portsentry actue contra el agresor. Es cojonudo dejarlo en 0, con que toque un puerto nos sobra, no somos personas generosas, estamos intentando proteger nuestro sistema y ya con que nos toquen el puerto 22 indica que a priori, no está pensando nada bueno.

######################
# Port Banner Section#
######################

Esto es una lamerada que solo funciona si se está ejecutando el modo normal, en teoria es un mensajito que saldrá a la persona que está violentando el puerto que tenemos a la escucha, yo paso de poner nada.

Por último, modificamos el fichero /etc/defaults/portsentry indicando al demonio el modo en el que debe iniciar.

TCP_MODE=”atcp”
#UDP_MODE=”udp”

Comentamos la parte udp, pq ya dije que en mi caso, lo para todo el router y le decimos mediante el parametro atcp que se inicie en modo avanzado y monitorizando las conexiones tcp.

Reiniciamos el servicio

#/etc/init.d/portsentry restart

Y ya está todo corriendo correctamente, Portsentry nos enviará alertas cuando nos ataquen a /var/log/syslog y mantendrá actualizada su lista de gente bloqueada y el historial en los ficheros que indicamos en esta configuración.

En la pc que tenemos corriendo portsentry ejecutamos:
#tail -f /var/log/syslog

Para ver los logs simplemente ejecutamos:

#nmap host-con-portsentry-instalado
Y veremos en el tail los logueos del nmap con la etiqueta "attackalert"


PARA CREAR REGLA DE IPTABLES:
-----------------------------
##################
# Ignore Options #
##################
# 0 = Do not block UDP/TCP scans.
# 1 = Block UDP/TCP scans.
# 2 = Run external command only (KILL_RUN_CMD)BLOCK_UDP="1"
BLOCK_UDP="1"
BLOCK_TCP="1"

###################
# Dropping Routes:#
###################
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
#No se puede combinar con otro, por ejemplo elijo el anterior o este:
#KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
#nunca ambos

y cada vez que se escanea de la otra ip se crea un log en /etc/portsentry/portsentry.history <-- borrarla y reiniciar el demonio:
#/etc/init.d/portsentry

Hacer el escaneo desde el host remoto:
#nmap -sT 192.168.1.105

Verificar que se creo una regla de iptables en el server de portsentry:
#iptables -L

Para borrar la regla:
#iptables -D INPUT 1

Fuentes y Bibliografia:
-----------------------
* http://gnu4all.wordpress.com
* http://www.securityfocus.com/infocus/1580
* http://www.gwolf.org/seguridad/portsentry/node2.html