Mostrando entradas con la etiqueta Manuales de seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Manuales de seguridad. Mostrar todas las entradas

Modificacion registro para seguridad TCP/IP

Voy a enseñarles a realizar
una modificacion al registro con el fin de mejorar algunos aspectos
relacionados con la seguridad de TCP/IP en sus equipos por ejemplo les
ayudara a evitar un ataque DOS .

El procedimiento es sencillo:
Desde
el menú “Inicio” opción “Ejecutar” y una vez allí llamar a la utilidad
“RegEdit 32” escribiendo tan solo “regedt32” y dando enter. Por medio
de RegEdit 32, editaremos los valores correspondientes básicamente a
dos claves, por un lado aquella correspondiente a los parámetros
generales de TCP/IP:


HKLM\System\CurrentControlSet\Services\Tcpip\Parameters"
DisableIPSourceRouting = 2
EnableDeadGWDetect = 0
EnableICMPRedirect = 0
EnablePMTUDiscovery = 0
KeepAliveTime = 300000
NoNameReleaseOnDemand = 1
PerformRouterDiscovery = 0
SynAttackProtect = 1
TcpMaxConnectResponseRetransmissions = 2
TcpMaxDataRetransmissions = 3
TCPMaxHalfOpen = 500
TCPMaxHalfOpenRetired = 400
TCPMaxPortsExhausted = 5

Y
por el otro si así lo deseáramos, podríamos customizar algunos de los
valores de Windows Sockets, de modo tal que podamos especificar la
forma en la que operarán aplicaciones tales como FTP o Web servers.

Puesto
que este tipo de operaciones, interactúan con el controlador AFD.SYS,
la clave sobre la cual realizaremos cambios, será precisamente la
siguiente:


HKLM\System\CurrentControlSet\Services\AFD\Parameters"
EnableDynamicBacklog = 1"
DynamicBacklogGrowthDelta = 10"
MaximumDynamicBacklog = 20000"
MinimumDynamicBacklog = 20"

Una
vez realizado estos cambios nuestro sistema debería encontrarse
bastante mas seguro que al comenzar. Si eres alguien que realmente
entiende TCP/IP, quizás hasta puedas ir testeando los valores
seleccionados a fin de ir variándolos a fin de mejorar aspectos
relacionados con la performance, aunque estos valores probablemente se
ajusten a tus necesidades.

Por ultimo, si estas interesado en
obtener mas información respecto de estos cambios, quizás sea buena
idea echar un ojo a los artículos ID 315669 y 324270 en la Microsoft
Knowledge Base.

Criptografía de Curva Eliptica

En criptografía se habla de curva elíptica en referencia a una ecuación
y²=x³+Ax+B que cumple 4A³+27B²≠0. Dando diferentes valores a A y B
obtenemos todo un conjunto de curvas que, al ser dibujadas, ofrecen una
forma similar. Son ejemplos de curvas elípticas y²=x³-x (izquierda) y
y²=x³-x+1.


Las
curvas elípticas tienen ciertas características que las hacen
especiales en el mundo de la criptografía. Una de estas características
consiste en la posibilidad de poder generar un punto en una curva
partiendo de dos puntos dados (o incluso de uno). Este concepto es muy
fácil de entender partiendo de la figura siguiente.


Usamos
como puntos de partida P y Q, dos puntos conocidos. Trazaremos una
linea entre P y Q. Si la linea corta la curva en un tercer punto, lo
reflejaremos a través del eje, dando lugar a un nuevo punto R. Esta
operación se representa como R=P+Q. En caso de que la linea que pasa
por P y Q no corte a la curva en ningún otro punto, diremos que corta
la curva en un punto O en el infinito y representaremos esta operación
como P+Q=O.

Partiendo de la suma, no es difícil encontrar un
mecanismo que nos permita realizar multiplicaciones de tipo kP, siendo
k un escalar. Por ejemplo, imaginemos que queremos realizar la
operación 13P, es decir, multiplicar 13 por un punto P. Bastaría con
realizar la siguiente secuencia de doblado de puntos:

P, 2P=P+P, 4P=2P+2P, 8P=4P+4P, 13P=8P+4P+P


Este
simple mecanismo para generar nuevos puntos dota a una curva elíptica
de la posibilidad de realizar operaciones aritméticas sobre ella, base
de los criptosistemas que estudiaremos en breve.

En criptografía
las curvas elípticas se usan sobre campos finitos (Fq) con q muy
grande. Un ejemplo de campo finito podría ser F5={0,1,2,3,4}. De manera
que el número 7 representado en el campo finito correspondería a 7 mod
5 = 2.
Cuando se usan campos finitos el número de puntos que hay en
una curva tambien es finito. Este numero se llama orden de la curva y
se representa como #E. Debemos diferenciarlo del orden de un punto, que
se refiere al valor k más pequeño (diferente de 0) que multiplicado por
P da O.



El problema del logaritmo discreto (DLP)


La
criptografía de Clave Pública basa su fuerza en la dificultad de
resolver ciertos problemas matemáticos. Uno de los más usados es el
problema del logaritmo discreto (Discrete Logarithm Problem - DLP).
Este problema se basa en la dificultad que representa resolver una
ecuación de tipo x = ay mod n donde x, a y n son conocidas e y es la
variable que se busca. De hecho, para valores de n e y sufientemente
grandes es computacionalmente imposible resolver el problema, al menos,
con los algoritmos y ordenadores actuales.
El algoritmo más rápido
conocido para resolver este problema es el Index Calculus que permite
resolverlo en tiempo subexponencial.



El problema del logaritmo discreto en Curvas Elípticas (ECDLP)


Existe
una problema similar al problema del logaritmo discreto que puede
usarse con Curvas Elípticas. Anteriormente hemos visto como realizar
una operación tipo Q=kP de una forma sencilla. Sin embargo, obtener k y
P partiendo solo de Q es computacionalmente difícil. De hecho, el
algoritmo más rápido que permite encontrar una solución es el algoritmo
Rho de Pollard, pero este algorimo es de tiempo exponencial, mucho mas
lento que en el caso del ataque a DLP mediante el Index Calculus.
Este
hecho es muy importante, pues la dificultad de resolver ECDLP frente a
DLP permite que los criptosistemas que se basan en el primero usen
claves mucho más cortas. De manera que los sistemas que usan ECDLP
requieren mucha menos memoria y capacidad de proceso.
Una clave RSA de 4096 bits ofrece la misma seguridad que una clave de un criptosistema de Curva Elíptica de 313 bits.



Intercambio de Claves de Diffie-Hellman


El
intercambio de claves de Diffie-Hellman es un protocolo que permite un
intercambio secreto y seguro de claves entre dos partes que no han
tenido un contacto previo. Se usa ampliamente en criptografía y se basa
en el problema del logaritmo discreto (DLP). Por lo tanto, puede usarse
el mismo algoritmo a través del problema ECDLP.

Al algoritmo puede resumirse en los siguientes pasos:

1.
Alice y Bob eligen una curva elíptica E sobre un campo finito Fq de
manera que el ECDLP sea computacionalmente difícil. También eligen un
punto P en dicha curva de manera que su orden sea un número primo
grande.

2. Alice elige un entero grande a, calcula PA=aP y envía PA a Bob.

3. Bob elige un entero grande b, calcula PB=bP y envía PB a Alice.

4. Alice calcula aPB=abP

5. Bob calcula bPA=abP


Al
finalizar el algoritmo, tanto Alice como Bob disponen de abP. Pero un
usario que escuche el canal solo habrá podido obtener PA y PB, los
cuales no le permiten calcular abP a menos que resuelva el ECDLP. Alice
y Bob solo tendrán que extraer una clave a partir de abP y usarla para
enviar datos cifrados. Para tal propósito podrán usar cualquier
algoritmo simétrico como DES, AES, etc.



Algoritmo de firma digital (ECDSA)

El
algoritmo de firma digital para curvas elípticas está basado en el
estandar de firma digital DSA. Este algoritmo ofrece un esquema que
permite firmar documentos y verificar las firmas.

Los pasos a seguir para generar claves, firmar y verificar la firma, se muestran a continuación.

Alice genera un par de claves:

1. Alice elige una curva E con orden #E=fr, de manera que r sea un primo grande.

2. Alice busca un punto en la curva de orden r.

3. Alice elige un número aleatorio d situado en el intervalor [2, r-2] y calcula Q=dP.

4. La clave pública corresponde a (E,P,r,Q) y la clave privada a d.



Alice firma un documento M.
(h(M) corresponde al hash de M)

1. Alice elige un número aleatorio k en el intervalo [2, r-2].

2. Se calcula el punto (x, y)=kP

3. R=x mod r

4. s=k¯¹ (h(M) +Rd) mod r, si s es igual cero, empezamos de nuevo.

5. La firma de Alice es (R,s) y se transmite junto con el mensaje M.


Bob verifica la firma de Alice.

1. Bob obtiene la clave pública de Alice.

2. w = s¯¹ mod r

3. u1 = h(M) w mod r

4. u2 = Rw mod r

5. (x, y) = u1P + u2P

6. v = x mod r

7. Si v es igual a R, la firma es válida.


OpenSSL: Un ejemplo práctico de firma digital mediante curvas elípticas.


Des
de la versión 0.9.8 la herramienta OpenSSL ofrece algunas opciones para
trabajar con curvas elípticas. No están muy documentadas, pero nos
servirán para realizar una pequeña demostración del uso de la firma
digital.

Para generar un clave ejecutaremos el siguiente comando:

Código:
$ openssl ecparam -genkey -name secp224r1 -out key.pem

Ahora tanto la clave pública como la privada se encuentran dentro de key.pem. Podemos extraer la pública con el comando:

Código:
$ openssl ec -in key.pem -text -pubout -out pubkey.pem

Ya disponemos de una clave con la que hacer pruebas, por lo que generaremos un mensaje que firmar:

Código:
$ echo "El mensaje de prueba de h4ck1t!" > msg.txt

Y lo firmaremos, operación que solo puede realizar el propietario de la clave privada:

Código:
$  openssl dgst -sign key.pem -ecdsa-with-SHA1 < msg.txt > msg.sig

Firmado el mensaje, todo usuario que disponga de la clave pública podrá verificar su procedencia:

Código:
$ openssl dgst -verify pubkey.pem -ecdsa-with-SHA1 -signature msg.sig < msg.txtVerified OK


Referencias:

Elliptic Curves, Number Theory and Cryptography. Lawrence C. Washington. Ed Chapman & HALL/CRC.
Prime Numbers, a Computational Perspective. Richard Crandall, Carl Pomerance. Ed Springer.

Videotutorial Online: Encriptando archivos en Ubuntu




Anti flood/Lamers sin escrupulos

A ver, les planteo el escenario:

Un lammer aburrido que desea joder y con ip variable realiza sendos ataques "Flood" a una web. Esta web guarda los logs en un txt (ademas de en la base de datos).

La idea es crear un script que le meta ban automaticamente al lamercillo cuando se conecte, use la ip que use.

Y como hacerlo si tiene ip variable? Sencillo, si hay algo que lo diferencia de los demás es que el lamercillo queda repetidamente registrado en los logs.

Haremos un source en php para leer dichos logs en cada intento erroneo de
identificación y le meteremos un ban automatico y de por vida xD.

Además, puede que este lamercillo llegue a vulnerar el tag, tambien crearemos logs de las ips que postean en el tag y si se repite 3 veces seguidas BAN!

Para empezar, veamos como se consigue una IP via php: $_SERVER["REMOTE_ADDR"]

Y si tiene proxy: $_SERVER["HTTP_X_FORWARDED_FOR"]

Entonces, un simple condicional inviolable y nos despreocupamos de la IP:

if ($_SERVER["REMOTE_ADDR"] == "200.94.90.133") {echo "LAMMER DE MIERDA, VETE A TU PUTA CASA";}
elseif ($_SERVER["HTTP_X_FORWARDED_FOR"] == "200.94.90.133") {echo "QUE TE PIRES PUTO LAMMER!";}
else {
...
...
...
}


Con esto tendriamos solucionado el problemilla del lamerzuelo sin conocimientos y desafortunado, el problema seria que dicho lamerzuelo sin escrupulos y valido para nada tubiera ip variable, con lo cual el banear una solo ip no serviría de nada (de más está decir que el lamersucho invalido no sabe usar proxys, aunque tambien serviría en este caso la solucion xD).

Entonces lo que hace falta es un source que cree un detalle de todas las ips que posten en el tag o
intentan identificarse en la web:

<?php
...
...
...
$IP=$_SERVER["REMOTE_ADDR"]; #esta seria la IP real (o la de un proxy muy transparente)
$IP2=$_SERVER["HTTP_X_FORWARDED_FOR"]; #esta la ip del proxy...

if ($IP2 == ""){
$master=fopen("antilamers.txt",a);
fwrite($master, $IP);
fclose($master);
}
else {
$master=fopen("antilamers.txt",a);
fwrite($master, $IP2); # en este caso no nos interesaria banear la ip real pq daria el mismo resultado..
fclose($master);
...
...
...
?>

O se podria hacer mas seguro en sql (para los que creen en eso de los hackers y fantasias de esas xD) usado mysqlquery para añadir las ips en una tabla y con select * from table where ip like "ip" comprobarlas... pero como no me salio de la polla hacerlo así, no voy a explicarlo xD.

OK, siguiendo con el tema, ahora hay que hacer un scriptcito anti PUTOS-LAMMERS-DE-MIERDA (XD) que se fije en las ultimas 3 entradas del txt que hemos creado y si son =les meta un ban al lammer.


<?php
$ips = file('antilamers.txt');
if ($ips[0] == $ips[1] && $ips[1] == $ips[2]) {
$master=fopen("banlist.txt",a);
fwrite($master, $ips[0]);
fclose($master);
}
...
...
?>

Eso iria en cualquier web "bruteable" tipo un tag o un form de registro...

Ahora solo queda aplicar el ban

<?php
$baneds=file("banlist.txt");
foreach ($baneds as $baned_num => $baned) {
if ( $_SERVER["REMOTE_ADDR"] == $baned OR $_SERVER["HTTP_X_FORWARDED_FOR"] == $baned ) {
echo "PRINGADO LAMERUZO! DATE EL PIRO!!!!<br><br> HOMELESSHACKER OWNS YOU!";
}
else{
...
...
...
}
?>


Y listo, ni captchas, ni reglas mas complicadas en apache, ni ná! PUTOS LAMMERS que divertidos son xD

Ya se que lo reglamentario es hacerlo en sql, pero tenia al lameruzo este haciendo un brute al sistema de identificación y apurado lo hice así.

A lo mejor en algun momento, si me aburro mucho, lo paso a sql y lo posteo.
De todos modos asi lo veo bastante seguro. Que opinan?


Me comentan que seria vulnerable a xss o a sql injection ese script, realmente si se hace en un txt no es vulnerable pero si lo guardan en una db recuerden pasarle htmlentities y addslashes a la variable que contiene la ip, puesto que sino se podria llegar a hacer una injection o un xss atack editando la cabecera html.

TrueBug PHP Encoder





TrueBug
PHP Encoder protege las aplicaciones PHP para garantizar el despliegue,
sin exponer el código fuente. PHP Codificador permite la codificación
de scripts PHP antes de distribuirlos. El script está encriptado el
código antes de guardar. Código PHP que está codificado de esta
aplicación se vea protegido contra toda modificación no autorizada y el
robo. Codificación también impide que los hackers en busca de su código
de seguridad para encontrar puntos débiles.

Banner Grabbing: El poder de los Banners

Quizas a alguien le parezca medio estupido esto, pero la verdad es que esta muy equivocado. Esta parte de el reconocimiento forma parte de la "etapa" de enumeración o reconocimiento (que suele ser la 3ª etapa) para los que pretenden incursionar en un sistema por medio de la ejecución de vulnerabilidades para realizar un pentest o simplemente hackear el sistema. Que seria de nosotros sin estos amigables "banners" que nos hacen la tarea mas fácil (ya que nuestra tarea es dificultosa), pero si no existieran todavía nos quedaría otro as bajo la manga que es el "fingerprinting", pero ese es otro tema a tratar.
Cuando hablamos de banners en cuanto al reconocimiento de aplicaciones hablamos de strings que nos dicen, explícitamente, su nombre, su versión, su autor y muchas cosas mas. Esto no puede ser muy verosímil, pero puede ser la opción mas rápida y elegida.

Bueno, manos a la obra. Un ejemplo rápido del "Banner Grabbing" puede ser:

$ HEAD www.leetupload.com
200 OK
Connection: close
Date: Thu, 10 Jan 2008 11:25:14 GMT
Server: Apache/2.0.61 (Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
Client-Date: Thu, 10 Jan 2008 11:25:14 GMT
Client-Peer: 208.113.167.188:80
Client-Response-Num: 1
X-Pingback: http://www.leetupload.com/news/xmlrpc.php
X-Powered-By: PHP/5.2.3
$

Entonces, lo echo aquí es una petición HEAD (no creo que les falte el programa..) a una muy buena web que es leetupload.com. Analicemos lo que nos interesa para reconocer la aplicación (estos datos difieren de cada url, o sea que nos puede mostrar mas info o menos):

#~ Server: Apache/2.0.61 (Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2
#~ X-Powered-By: PHP/5.2.3

En el primer dato podemos ver claramente que el servidor es Apache 2.0.61 corriendo en un sistema Unix y los demas datos son programas que agregan funcionalidades al servidor. El segundo dato nos informaría que tipo de versión de PHP esta corriendo el servidor en este momento, que seria la 5.2.3. Con esta información ya podríamos correr algún exploit o analizar nosotros mismos las vulnerabilidades creando sus exploits (a trabajar..) ya sabiendo que corre a nivel de aplicación y quizas a nivel de aplicación web.
Pero si queremos descubrir otros servicios, es la misma tecnica, solo hay que conectarce y mirar el banner que nos provee la aplicación. Por ejemplo, ahora (de la misma web) queremos saber que servidor ftp corre, entonces seria asi:

$ ftp
ftp> open www.leetupload.com
Connected to www.leetupload.com.
220 ProFTPD 1.3.1rc2 Server (DreamHost FTP) [208.113.167.188]
Name (www.leetupload.com:c1c4tr1z):

El banner es claro y visible desde el espacio, ProFTPD seria la aplicación que corre como servidor y 1.3.1rc2 seria su versión del software. La forma automática mas usada en estos casos es: amap. Amap es una aplicación que reconoce aplicaciones. Bueno entonces bajamos amap y lo compilamos. Lo que haremos con este simple caso seria:

$ ./amap -B -b www.leetupload.com 21
amap v5.2 (www.thc.org/thc-amap) started at 2008-01-10 10:39:39 - BANNER mode

Banner on 208.113.167.188:21/tcp : 220 ProFTPD 1.3.1rc2 Server (DreamHost FTP) [208.113.167.188]\r\n

amap v5.2 finished at 2008-01-10 10:39:40
$

Aquí el proceso es muy rapido y se puede automatizar para que realice la misma operación en diferentes puertos , además de tener la opción de analizar la aplicación enviando paquetes y checkeando la respuesta aunque no sean aplicaciones ascii (me estoy yendo al carajo..). Para analizar mas puertos solo hay que ir agregándolos, o sea:

$ ./amap -B -b www.leetupload.com 21 22
amap v5.2 (www.thc.org/thc-amap) started at 2008-01-10 11:11:26 - BANNER mode

Banner on 208.113.167.188:21/tcp : 220 ProFTPD 1.3.1rc2 Server (DreamHost FTP) [208.113.167.188]\r\n
Banner on 208.113.167.188:22/tcp : SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.6\n

amap v5.2 finished at 2008-01-10 11:11:27
$

De este modo se puede escanear de forma rapida los puertos 21(ftp) y 22(ssh), capturando sus banners. Se puede agregar la opción -v verbose (dos veces tambien) para que se explique paso a paso el proceso. Otra alternativa recurrida es el mayormente conocido: Nmap. Este pequeño amigo dudo que falte en cualquiera de sus computadoras, ya que es la pieza mas útil que se puede encontrar para el reconocimiento de un sistema. Ya todos lo conocen, asi que no tengo que explicar sus funciones y/e opciones, sino usen google. Para nuestra mision a nuestro nmap lo usaremos asi:

$ nmap -P0 -sV -F www.leetupload.com

Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-10 11:07 ARST

Interesting ports on www.leetupload.com (208.113.167.188):
Not shown: 1246 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1rc2
22/tcp open ssh OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp filtered smtp
80/tcp open http Apache httpd 2.0.61 ((Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2)
111/tcp filtered rpcbind
113/tcp open auth?
548/tcp open afpovertcp?
587/tcp open smtp Postfix smtpd
1720/tcp filtered H.323/Q.931
Service Info: OSs: Unix, Linux

Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 90.002 seconds
$

Y al mirar el resultado de nmap nos damos mayor cuenta de el poder que nos brindan los banners, sin la necesidad de instalar nada y con la impotencia de los sysops o admins. Aunque es la opcion mas recurrida y especifica en relación a la otra (amap) es mas lenta, aun así usando el tiempo -T al máximo. Pero nunca se fien de los banners por completo, ya que pueden ser modificados como vamos a ver ahora.

Contraataque:

Me apena poner esto en esta web, pero es algo que deben saber para poder entender como evitar la técnica del Banner Grabbing. En el ejemplo usaremos a nuestro querido servidor Apache, para esto tendremos que bajarlo, descomprimirlo, pero no compilarlo.. sino ir a la carpeta include y abrir el archivo ap_release.h, busquen algo como esto:

#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
#define AP_SERVER_BASEPRODUCT "Apache"

#define AP_SERVER_MAJORVERSION_NUMBER 2
#define AP_SERVER_MINORVERSION_NUMBER 2
#define AP_SERVER_PATCHLEVEL_NUMBER 6
#define AP_SERVER_DEVBUILD_BOOLEAN 0

Este archivo header define los datos de versión, producto, compañía, etc. Entonces para hacer a lo que pensamos hacer debemos cambiar estas lineas para que quede algo como esto (puede ser a su gusto):

#define AP_SERVER_BASEVENDOR "MyServersito Soft"
#define AP_SERVER_BASEPROJECT "MyServersito HTTP Server"
#define AP_SERVER_BASEPRODUCT "MyServersito"

#define AP_SERVER_MAJORVERSION_NUMBER 1
#define AP_SERVER_MINORVERSION_NUMBER 1
#define AP_SERVER_PATCHLEVEL_NUMBER 0
#define AP_SERVER_DEVBUILD_BOOLEAN 8

Lo compilamos e instalamos, lo corremos (no es necesario que explique todo esto..). Despues de todo esto, hacemos el primer ejemplo del articulo:

$ HEAD 127.0.0.1
200 OK
Connection: close
Date: Thu, 10 Jan 2008 11:25:14 GMT
Server: MyServersito/1.1.0.8 (Unix)
Content-Type: text/html
Client-Date: Thu, 10 Jan 2008 13:36:24 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
$

Se pueden modificar varias cosas, pero eso se lo dejo a ustedes. Y otro ejemplo puede ser el servidor ftp ProFTPD visto en el banner de www.leetupload.com, que es el mismo mecanismo a excepcion que el archivo header se llama version.h, pero es mas cortito y conciso:

#define PROFTPD_VERSION_TEXT "1.3.1rc3"

Por (ejemplo):

#define PROFTPD_VERSION_TEXT "6.2.8"

Esto no lo probe personalmente, pero dudo que haya un problema (XD) ya que lo compile y no ocurrió ningún problema de ningún tipo. Bueno! Espero que les haya gustado leer hasta aca el articulo, sino es asi pues jodanse.. Si bien no es una técnica dificultosa, encontre muy pocos sitios que lo expliquen con mas de "3" palabras. Por alguna sugerencia o arreglo posteen.

Seguridad en SSH

Si os fijais en los logs generados por ssh, veréis la cantidad de intentos de ataques que sufre este servicio. Existen gusanos que intentan lanzan ataques remotos con intención de loguearse como root en nuestros sistemas y así instalar otros rootkits o hacerse con el control del mismo.
Lo primero para mantener nuestra maquina protegida, será hacer un script de IPTABLES personalizado para nuestro sistema, con política por defecto DROP.

Una vez tengamos mas o menos restringidos los accesos con IPTABLES, añadiremos nuestro usuario al grupo sudoers, así evitamos tener que estar logeados como root para tareas de administración. Para ello editamos (como root) el archivo:

Código:

$ nano /etc/sudoers

y buscamos la linea:

Código:

root ALL=(ALL) ALL

a la que añadimos abajo el nombre de usuario que le permitiremos hacer sudo:

Código:

usuario ALL=(ALL) ALL

Conviene decir que es diferente hacer su o hacer sudo. Su es para convertirse en root, y sudo es para ejecutar un comando como root.

También restringiremos el login de root desde ssh y el puerto editando el archivo /etc/ssh/sshd.config:

Código:

$ sudo nano /etc/ssh/sshd.config

y cambiamos las siguientes lineas
Código:

PermitRootLogin Yes
Port 22

Por
Código:

PermitRootLogin No
Port 2222

Como hemos cambiado el puerto usado por ssh, tenemos que añadir una regla en nuestro script iptables (insisto, con política por defecto DROP):
Código:

$ sudo nano /etc/init.d/firewall.sh
Añadiendo lo siguiente

Código:

#Permitimos el acceso ssh al puerto especificado en /etc/ssh/sshd.config
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A OUTPUT -p udp --sport 2222 -j ACCEPT

Bueno, ahora instalaremos una aplicación que revisa los logs de ssh en busca de ip’s que intente loguearse como root mediante ataques de fuerza bruta. Después de varios intentos fallidos (se puede configurar) denyhosts rechazará y baneará las ip’s atacantes.

Código:

$ sudo apt-get install denyhosts

y lo paramos para posteriormente configurarlo

Código:

$ /etc/init.d/denyhosts stop

editamos las siguientes variables a nuestro gusto:
Código:

$ sudo nano /etc/denyhosts.conf


DENY_THRESHOLD_INVALID: Número de intentos fallidos (con un usuario que no exista) necesarios para banear esa IP.
DENY_THRESHOLD_VALID: Número de intentos fallidos (con un usuario existente) necesarios para banear esa IP.
DENY_THRESHOLD_ROOT: Número de intentos fallidos (intentando entrar como root) necesarios para banear esa IP.
BLOCK_SERVICE = sshd/ALL/etc… : Servicios que bloqueados a usuarios baneados.
DAEMON_LOG = /var/log/denyhosts : Ubicación del log de denyhosts.
y lo volvemos a iniciar:

Código:

$ /etc/init.d/denyhosts start

Ahora tendremos nuestro acceso ssh bastante protegido de ataques, recordad que tener una contraseña compuesta por letras, números y algún carácter especial ayuda mucho a la seguridad de nuestro sistema.

Evitando Brute Force Attack usando DenyHosts

DenyHosts es un script que lee nuestro log para saber si alguien nos esta haciendo un BFA, esta hecho en python, para instalarlo solo hay que seguir estas pequeñas instrucciones(CentOS, RedHat o Fedora)

1. Primero revisamos que version de python tenemos (para los q no saben escriban python -V)
2. Despues dependiendo de la version (2.3.x o 2.4.x) descargamos el rpm

wget http://superb-east.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6-python2.3.noarch.rpm (2.3.x)
wget http://superb-east.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6-python2.4.noarch.rpm (2.4.x)


3. Posteriormente instalamos el rpm

rpm -i DenyHosts-2.1-python2.3.noarch.rpm (2.3.x)
rpm -i DenyHosts-2.1-python2.4.noarch.rpm (2.4.x)


4. Ahora proseguiremos con la configuracion, nos dirigimos a la carpeta donde se instalo (/usr/share/denyhosts)

cd /usr/share/denyhosts


5. Ahora copiamos con otro nombre diferente el archivo denyhosts.cfg-dist

cp denyhosts.cfg-dist denyhosts.cfg


Para ahorar el paso 4 y 5 escribe: cp /usr/share/denyhosts/denyhosts.cfg-dist /usr/share/denyhosts/denyhosts.cfg o simplemente copia y pega

6. Ahora editamos nuestro archivo
nano denyhosts.cfg (pueden usar vi o el q mas les guste)
(para los que se saltaron el apso 4 y 5 escriban nano /usr/share/denyhosts/denyhosts.cfg o usen el editor q gusten en lugar de nano)

Dentro de nuestro archivo veremos que esta la opcion para RedHat o Fedora (Tambien entra CentOS o derivados de los anteriores), Mandrake, FreeBSD, OpenBSD, Suse, Mac OS X, lo que nos importa es que la linea del log que revisaremos en RedHat o Fedora o CentOS se encuentre descomentada (si seguiste los pasos aqui expuestos estara descomentada) y quedaria de la siguiente manera:

SECURE_LOG = /var/log/secure

Tambien tiene q estar descomentada la siguiente linea

HOSTS_DENY = /etc/hosts.deny Aqui iran los que se bloquearan

Bajamos un poco mas y encontramos la siguiente linea

PURGE_DENY = 2w Despues del igual ponemos el tiempo que queremos banear las ips, para minutos m, para horas h, para dias d, para semanas w y para años y, ejemplo 2w para bloquear 2 semanas)

BLOCK_SERVICE = ALL Los servisios que bloquearemos a esta seran todos XD)

Esto es lo mas importante, tiene la opcion de mandarnos el reporte a nuestro mail, bajemos hasta donde diga

ADMIN_EMAIL = (aqui ponemos nuestro email xD)

Nos da la opcion de usar un servidor smtp
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_USERNAME=foo (descomentamos esta linea y ponemos el user)
SMTP_PASSWORD=bar (descomentamos esta linea y ponemos el pass)
SMTP_FROM = DenyHosts (aqui ponemos lo que queramos ejemplo: Seguridad o reporte@dominio.com o lo q queramos xD )
SMTP_SUBJECT = DenyHosts Report (El Asunto, igual lo que queramos, ejemplo: Reporte de ataques)

Esto es lo basico por asi decirlo

7. Ahora copias daemon-control-dist con otro nombre
cp daemon-control-dist daemon-control

8. Editamos el archivo
nano daemon-control (nano /usr/share/denyhosts/daemon-control)
Y revisamos que se encuentren las siguientes lineas:
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"

9. Ahora lo asignamos a root
chown root daemon-control

10. Le cambiamos permisos
chmod 700 daemon-control

11. Iniciamos DenyHosts
./daemon-control start

12. Hacemos que inicie automaticamente
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts

Listo espero les sirva de algo y les guste

Como instalar APF Firwall para apoyar a iptables

1. En mi caso yo siempre creo una carpeta llamada descargas en /, pueden descargarlo donde lo deseen
2. Abrimos consola y escribimos: wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
3. Descomprimomos el archivo usando: tar -xvzf apf-current.tar.gz
4. Ingresamos al directorio cd apf-version (actualmente va en la version 9.6-3 queria asi: cd apf-0.9.6-3)
5. Ejecutamos el instalado ./install.sh
6. Una vez instalado nos dirigimos a editar el archivo archivo a nuestras necesidades, la configuracion se encuentra /etc/apf/conf.apf, y se puede editar con tu editor favorito (valgase la rebusnancia xD) en mi caso uso nano y quedaria asi:
nano /etc/apf/conf.apf
7. Buscamos donde dice USE_DS="0" y lo cambiamos el 0 por un 1 para activar la proteccion DoS
7. Buscamos donde dice DEVM="1" y lo cambiamos el 1 por un 0 para desactivar la proteccion que tiene pordefecto y que hace que se reinicie cada 5 minutos
8. Buscamos IG_TCP_CPORTS e IG_UDP_CPORTS los cuales y ponemos los puertos que queremos tener abiertos ^^
10. Si sabemos en que estamos conectado (tarjeta de red alambirca o inalambrica o si tenemos dos tarjetas de red y sabemos cual estamos usando) cambiamos IFACE_IN="eth0" e IFACE_OUT="eth0" por el nombre que usamos, por defecto es eth0, si no sabemos ni q pex escribimos ifconfig y ese nos mostrara que tarjeta estamos ocupando
11. Iniciamos (/etc/init.d/iptables start) o reiniciamos (/etc/init.d/iptables restart) nuestro iptables
12. Iniciamos APF /usr/local/sbin/apf -s
13. Lo agregamos al inicio ^^ chkconfig --level 2345 apf on
14. Guardamos nuestras reglas en el iptables /etc/init.d/iptables save
15. Listo ya quedo jejeje, ahora si queremos banear una ip puede ser por medio de iptables o apf, para iptables iptables -A INPUT -s ip -j DROP y para apf ./apf -d ip Alguncomentarioaqui (donde ip es la ip que queremos bannear)

Bueno esto es muy basico y espero les sirva

Seguridad IP (IPSec)

Seguridad IP (IPSec) es el cifrado del tráfico de red. No se puede cifrar la información de la cabecera ni el trailer (p. ej. la dirección IP y puerto de donde viene el paquete y su destino, los checksums de CRC, etc.), pero se puede cifrar la carga útil. Esto permite asegurar protocolos como POP/WWW sin tener que cambiarlos de ninguna forma, puesto que el cifrado se hace en el nivel IP. También permite conectar de forma segura LANs y clientes entre sí, sobre redes inseguras (como Internet). En la actualidad, IPSec para Linux está en fase de pruebas, sin embargo ya se han lanzado varias versiones estables, y yo mismo he desarrollado servidores seguros basados en IPSec. IPSec es un standard, y parte el protocolo IPv6, de modo que ya se puede comprar software IPSec para Windows 95/98/NT, Solaris y otros Unix, que interoperarán con Linux IPSec.



Soporte IPSec del kernel

Para utilizar IPSec es necesario tener soporte IPSec en el kernel. Desafortunadamente, ninguna distribución Americana de Linux puede exportar criptografía robusta fuera de Norte América, de modo que en general, suelen escoger no incluirla en absoluto, de las distribuciones extranjeras de Linux, en la actualidad ninguna viene con soporte IPSec dentro del kernel. Es necesario conseguir el código fuente del kernel (recomiendo la 2.2.10, la más reciente a la hora de escribir esto), y el código fuente del Linux IPSec, disponible en: http://www.xs4all.nl/~freeswan/∞

Instala el fuente del kernel (generalmente en /usr/src/linux) y compila el nuevo kernel, instálalo, arráncalo y pruébalo. Asegúrate de que tus redes funcionan correctamente, si no funcionan, hacer que lo haga IPSec será imposible. Ahora hay que descargar la última instantánea de IPSec (la versión 1.0 NO funcionará con los kernels 2.2.x). Después ir a /usr/local/src (o dondequiera que hayas puesto el código fuente de tus programas), desempaquetar el fuente y ejecutar el programa de instalación (make menugo suele ser lo habitual para la configuración basada en ncurses). Lo cual parcheará los ficheros del kernel, luego ejecuta la configuración del kernel y después construye las herramientas IPSec y el kernel.

cd /usr/local/src/

tar –zvvxf /path/del/tarball/snapshot.tar.gz

chown –R root:root freeswan-snap1999Jun14b

cd freeswan-snap1999Jun14b

make menugo

asegúrate de guardar la configuración del kernel, incluso aunque se hayan elegido las opciones, no han sido guardadas. También tendrás que reconstruir el kernel, puesto que el comando "make menugo" ejecuta un "make zImage", lo cual suele fallar, debido a los grandes tamaños del kernel de la 2.2.x. Una vez que se ha hecho la compilación, debería dar uno o dos mensajes de error, simplemente haz:

cd /usr/src/linux

make bzImage

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.2.10-ipsec

Ahora hay que editar lilo.conf, ejecutar lilo de nuevo y reiniciar para hacer uso del nuevo kernel.

lilo.conf debería tener el siguiente aspecto:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=100

image=/boot/vmlinuz-2.2.10-ipsec

label=linux-ipsec

root=/dev/hda1

read-only

image=/boot/vmlinuz-2.2.10

label=linux

root=/dev/hda1

read-only

vuelve a ejecutar lilo y verás:

linux-ipsec *

linux

después reinicia y deberías estar ejecutando el kernel 2.2.10 con soporte IPSec. A medida que la máquina se reinicia y empieza el IPSec se verán varios errores, por defecto IPSec está configurado para utilizar el interfaz eth999, el cual por supuesto no existe. Deberías añadir /usr/local/lib/ipsec en la frase del path o si no tendrás que escribir el path completo un montón.



Configuración de redes IPSec

Tendrás que habilitar el TCP-IP forwarding en el servidor de enlace, en Red Hat Linux se hace cambiando la línea de /etc/sysconfig/network:

FORWARD_IPV4="false"

por:

FORWARD_IPV4="yes"

o se puede habilitar vía sistema de ficheros en /proc:

cat 1 > /proc/sys/net/ipv4/ip_forward

Puesto que la mayoría de la gente tiene por defecto políticas de denegación de paquetes de forwarding, tendrás que permitir que los paquetes atraviesen la rede remota / máquina de tu red / máquina y vice versa. Además de esto, cualquier regla de enmascaramiento para redes internas que también estén usando IPSec debe venir después de las reglas que permiten el tráfico IPSec, o la máquina intentará enmascarar los paquetes, en lugar de pasarlos al IPSec.

El siguiente ejemplo es para dos redes protegidas (usando direcciones IP no rutables, escondidas tras máquinas Linux haciendo enmascaramiento de IPs) conectadas vía Internet:

10.0.0.2 192.168.0.2

10.0.0.1 192.168.0.1

1.2.3.4 5.6.7.8

1.2.3.1 5.6.7.1

2.3.4.5 6.7.8.9

INTERNET



Conexión manual de llaves

Primero configuraremos un enlace utilizando la conexión manual de llaves (por simplicidad), hay que editar ipsec.conf, y las reglas del cortafuegos. La mayoría de las opciones por defecto del fichero ipsec.conf son correctas, pero hay que cambiar lo siguiente:

conn ejemplo

type=tunnel

left=

leftnexthop=

leftsubnet=

right=

rightnexthop=

rightsubnet=

spibase=0x200

esp=3des-md5-96

espenckey=

espauthkey=

reemplaza la espenckey y la espauthkey con las nuevas llaves (utilizando ranbits para generar un número, recuerda dejar el 0x por delante, que especifica que es un número hexadecimal) de modo que es algo así:

conn mi-tunel

type=tunnel

left=1.2.3.4

leftnexthop=1.2.3.1

leftsubnet=10.0.0.0/24

right=5.6.7.8

rightnexthop=5.6.7.1

rightsubnet=192.168.0.0/24

spibase=0x200

esp=3des-md5-96

espenckey=cualquier_llave_de_autentificación (ranbits 192)

espauthkey=cualquier_otra_llave (ranbits 128)

Una vez que has acabado, copia los ficheros ipsec.conf e ipsec.secrets desde la máquina en que los editaste hasta el otro servidor, de forma segura. Ahora, lo único que queda es añadir reglas al cortafuegos para que no se enmascaren los paquetes (en lugar de eso lo que queremos es redirigirlos, hacer un forward).

En el servidor 1.2.3.4 se deberían añadir las siguientes reglas:

ipchains –A forward –p all –j ACCEPT –s 10.0.0.0/24 –d 192.168.0.0./24

ipchains –A forward –p all –j ACCEPT –s 192.168.0.0/24 –d 10.0.0.0/24

asegúrate de que estas reglas aparecen antes de la regla de enmascaramiento, algo así:

#

# FORWARD RULES

#

ipchains –P forward DENY

#

ipchains –A forward –p all –j ACCEPT –s 10.0.0.0/24 –d 192.168.0.0/24

ipchains –A forward –p all –j ACCEPT –s 192.168.0.0/24 –d 10.0.0.0/24

ipchains –A forward –p all –j MASQ –s 10.0.0.0/24 –d 0.0.0.0/0

Y en el servidor 5.6.7.8 se repetiría el proceso:

ipchains –A forward –p all –j ACCEPT –s 192.168.0.0/24 –d 10.0.0.0/24

ipchains –A forward –p all –j ACCEPT –s 10.0.0.0/24 –d 192.168.0.0/24

asegúrate de que estas reglas aparecen antes de la regla de enmascaramiento, algo así:

#

# FORWARD RULES

#

ipchains –P forward DENY

#

ipchains –A forward –p all –j ACCEPT –s 192.168.0.0/24 –d 10.0.0.0/24

ipchains –A forward –p all –j ACCEPT –s 10.0.0.0/24 –d 192.168.0.0/24

ipchains –A forward –p all –j MASQ –s 192.168.0.0/24 –d 0.0.0.0/0

Ahora deberías ser capaz de establecer el túnel ipsec manualmente en ambas máquinas, y las máquinas de la Red A deberían ser capaces de hablar con las máquinas de la red B sin problemas.

ipsec manual –up mi-tunel

lo cual mostraría una salida similar a:

/usr/local/lib/ipsec/spi: message size is 36

/usr/local/lib/ipsec/spi: message size is 132

/usr/local/lib/ipsec/spi: message size is 132

Para probarlo, haz un ping a 192.168.0.2 desde el cliente 10.0.0.2. Si funciona, lo has configurado correctamente. Si no funciona, verifica tu red para asegurarte de que 1.2.3.4 puede ver 5.6.7.8 y que está habilitado el TCP-IP forwarding, y asegúrate de que no hay reglas del cortafuegos que estén bloqueando paquetes o intentando enmascararlos. Una vez que has establecido y probado la conexión con éxito, deberías pasar a la conexión automática de llaves (especialmente en entornos de producción).



Conexión automática de llaves

Si se intenta usar IPSec en un entorno de producción, la conexión manual de llaves es una mala idea, en términos generales. Con la conexión automática se tiene un secreto compartido de 256bit que se copia a ambos lados del túnel, el cual se utiliza durante el intercambio de llaves para asegurarse que no se dan ataques del tipo "man in the middle, hombre de por medio". Con la conexión automática, la vida media de una llave es de 8 horas, lo cual se puede ajustar a cualquir intervalo, y si alguien se las arregla para atacar por fuerza bruta la llave, sólo será válida durante ese período de tráfico de 8 horas. El ejemplo siguiente se construye sobre el anterior:

ipsec.secrets contiene el secreto compartido. Este fichero debe ser puesto a salvo a toda costa. Para una conexión entre los servidores 1.2.3.4 y 5.6.7.8 se necesitaría una línea como:

1.2.3.4 5.6.7.8

"0xa3afb7e6_20f10d66_03760ef1_9019c643_a73c7ce0_91e46e84_ef6281b9_812392bf"



Esta línea necesita estar en ambos ficheros ipsec.secrets. Después se necesitaría editar la configuración del túnel en ipsec.conf por la siguiente:

conn mi-tunel

type=tunnel

left=1.2.3.4

leftnexthop=1.2.3.1

leftsubnet=10.0.0.0/24

right=5.6.7.8

rightnexthop=5.6.7.1

rightsubnet=192.168.0.0/24

keyexchange=ike

keylife=8h

keyingtries=0

Entonces se arrancaría el demonio pluto, intenta conectar al demonio Pluto desde el otro extremo del túnel, y establece una conexión. Una advertencia, Pluto se ejecuta en el puerto 500, udp, de modo que lo más probable es que tengas que abrir un hueco en el cortafuegos para permitirle pasar:

ipchains –A input –p udp –j ACCEPT –s 0.0.0.0/0 –i eth0 –d 0.0.0.0/0 500



Encuentro conveniente el uso de la clave "%search" en lugar de listar el túnel a arrancarse, añadiendo:

auto=start

para cada configuración del túnel y editar el ipsec.secrets:

plutoload=%search

plutostart=%search

Lo cual a la larga te hará la vida más fácil. Si todo va bien, deberías ver algo parecido a esto en /var/log/messages:

|| Jun 26 02:10:41 server ipsec_setup: Starting FreeS/WAN IPSEC... Jun 26 02:10:41 server ipsec_setup: /usr/local/lib/ipsec/spi: message size is 28 Jun 26 02:10:41 server ipsec_setup: KLIPS debug ‘none’ Jun 26 02:10:41 server ipsec_setup: KLIPS ipsec0 on eth0 1.2.3.4/255.255.255.0 broadcast 24.108.11.255 Jun 26 02:10:42 server ipsec_setup: Disabling core dumps: Jun 26 02:10:42 server ipsec_setup: Starting Pluto (debug ‘none’): Jun 26 02:10:43 server ipsec_setup: Loading Pluto database ‘mi-tunel’: Jun 26 02:10:44 server ipsec_setup: Enabling Pluto negotiation: Jun 26 02:10:44 server ipsec_setup: Routing for Pluto conns ‘mi-tunel’: Jun 26 02:10:45 server ipsec_setup: Initiating Pluto tunnel ‘mi-tunel’: Jun 26 02:10:45 server ipsec_setup: 102 "mi-tunel" #1: STATE_MAIN_I1: initiate Jun 26 02:10:45 server ipsec_setup: 104 "mi-tunel" #1: STATE_MAIN_I2: from STATE_MAIN_I1; sent MI2, expecting MR2 Jun 26 02:10:45 server ipsec_setup: 106 "mi-tunel" #1: STATE_MAIN_I3: from STATE_MAIN_I2;sent MI3, expecting MR3 Jun 26 02:10:45 server ipsec_setup: 003 "mi-tunel" #1: STATE_MAIN_I4: SA established Jun 26 02:10:45 server ipsec_setup: 110 "mi-tunel" #2: STATE_QUICK_I1: initiate Jun 26 02:10:45 server ipsec_setup: 003 "mi-tunel" #2: STATE_QUICK_I2: SA established Jun 26 02:10:46 server ipsec_setup: ...FreeS/WAN IPSEC started ||

Y en el fichero /var/log/secure se debería ver algo parecido a esto:

|| Jun 26 02:10:42 server Pluto[25157]: Starting Pluto (FreeS/WAN Version snap1999Jun14b Jun 26 02:10:42 server Pluto[25157]: added connection description "mi-tunel" Jun 26 02:10:42 server Pluto[25157]: listening for IKE messages Jun 26 02:10:42 server Pluto[25157]: adding interface ipsec0/eth0 1.2.3.4 Jun 26 02:10:42 server Pluto[25157]: loading secrets from "/etc/ipsec.secrets" Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #1: initiating Main Mode Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #1: ISAKMP SA established Jun 26 02:10:42 server Pluto[25157]: "seifried-mosqueado" #2: initiating Quick Mode POLICY_ENCRYPT+POLICY_TUNNEL+POLICY_PFS Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #2: sent QI2, IPsec SA established Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #3: responding to Main Mode Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #3: sent MR3, ISAKMP SA established Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #4: responding to Quick Mode Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #4: IPSec SA established Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #5: responding to Main Mode Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #5: sent MR3, ISAKMP SA established Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #6: responding to Quick Mode Jun 26 02:10:42 server Pluto[25157]: "mi-tunel" #6: IPsec SA established ||

Además de esto se puede ver la salida de "eroute" para asegurarse de que los túneles están correctamente configurados:

10.0.0.0/24 -> 192.168.0.0/24 => tun0x114@1.2.3.4

Y si le echas un vistazo a tus rutas ("route"), deberías ver:

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

1.2.3.4 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

10.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth1

1.2.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

1.2.3.0 0.0.0.0 255.255.255.0 UG 0 0 0 ipsec0

192.168.0.0 1.2.3.1 255.255.255.0 UG 0 0 0 ipsec0

10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

0.0.0.0 1.2.3.1 0.0.0.0 UG 0 0 0 eth0



Productos IPSec comerciales

He pensado que sería interesante hacer un breve listado de los productos IPSec comerciales, por supuesto haciendo énfasis en los basados en Linux y FreeS/WAN

i-data

i-data desarrolla una línea de productos que incluyen un servidor VPN, basado en Linux y en FreeS/WAN. Están ubicados en Dinamarca, lo cual les permite que su producto esté disponible para todo el mundo. El sitio web está en: http://www.i-data.com/networks/∞

Productos IPSec para Windows

También existen paquetes de software que proporcionan capacidad de IPSec para Windows, uno de los cuales incluso es gratuito.

PGP VPN

Los autores de PGP (Network Associates) han creado un paquete de software "PGP VPN" (que tiene muy poco que ver con PGP). Soporta IPSec y se dice que también opera con Linux FreeS/WAN. Se puede conseguir en: http://www.nai.com/asp_set/products/tns/pgp_vpn.asp∞

IRE

http://www.ire.com

Snort Detección de intrúsos y ataques

En este manual explicare paso a paso como usar Snort para la deteccion de intrusos y ataques.


Instalación de Snort+ ACID:

Instalaremos Snort, utilizando una base de datos mysql y apache para el ACID (para ver estadísticas en vivo).

Paso 1:

Bajar todos los paquetes;

- snort-x.x.x.tar.gz
- acid-x.x.x
- adodb-x.x-for-php
- jpgraph-x.x
- mysql-x.x.x
- apache-1.3.x
- php-4.x

(Recomiendo apache 1.3 y php 4 ya que algunas características cambian en diferentes versiones)


Paso 2:

Descomprimir y compilar snort;

root@Homelesshacker # tar -zxvf snort.tar.gz
root@Homelesshacker # cd snort
root@Homelesshacker # ./configure --sysconfdir=/etc --prefix=/usr --with-mysql=/usr && nice -19 make
root@Homelesshacker # make install

Y creamos un directorio para los logs:
root@Homelesshacker # mkdir /var/log/snort

Paso 3:

Instalar mysql, apache y php;

su
passwd:*******
apt-get install apache2
apt-get install mysql
apt-get install php5
mysql -u root -p
apt-get install libapache2-mod-auth-mysql
apt-get install install php5-mysql
/etc/init.d/apache2 restart

Paso 4:

Crear tablas y configurar usuario en mysql;

root@Homelesshacker # mysql -u root -p

Desde aca en mysql...

Creamos la db:

$ CREATE DATABASE snort

Le ponemos clave:

$ grant all on snort.* to root@localhost identified by "password"

$exit

Salimos de mysql.. volvemos a la consola;

root@Homelesshacker # mysql -u root -ptu_contraseña < /usr/src/snort-x.x.x/schemas/create_mysql snort Paso 5:

Configuramos Snort;

root@Homelesshacker # mkdir /etc/snort; mkdir /etc/snort/rules
root@Homelesshacker # cd /usr/src/snort-2.3.3/
root@Homelesshacker # cp etc/* /etc/snort
root@Homelesshacker # cd rules
root@Homelesshacker # cp * /etc/snort/rules

Editamos el conf file;

root@murder # gedit /etc/snort/snort.conf

usando control f (buscar) buscamos la linea que pone RULE_PATH y la sustituimos por:

var RULE_PATH /etc/snort/rules

y localizamos la que pone "output database" y la sustituimos por:

output database: log, mysql, user=root password=tu_contraseña dbname=snort host=localhost

Guardar y cerrar gedit (o vim o lo que sea)

Paso 6:

Instalando ACID;

root@Homelesshacker # tar zxvf acid-x.x.x.tar.gz

Lo movemos a htdocs (o donde pitos este el home de apache..)

root@Homelesshacker # mv ./acid /var/www/htdocs/

Descomprimimos tambien jpgraph (para las imagenes) y adodb y los movemos:

root@Homelesshacker # tar zxvf jpgraph-x.x.tar.gz
root@Homelesshacker # mv ./jpgraph-x.x /var/www/htdocs/acid/jpgraph
root@Homelesshacker # tar zxvf adodbxxx.tgz
root@Homelesshacker # mv ./adodb/var/www/htdocs/acid/adodb

Editamos el conf file de acid:

root@Homelesshacker# gedit /var/www/htdocs/acid/acid_conf.php

Localizamos y modificamos la linea que pone: $Dblib_path

$DBlib_path = "/var/www/htdocs/acid/adodb";

Y modificamos las alertas (control f, $alert ;), deben quedar así:

$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "root";
$alert_password = "tu_contraseña";
$ChartLib_path = "/var/www/htdocs/acid/jpgraph/src";

Ahora creamos el siguiente archivo:
root@Homelesshacker # gedit /var/www/htdocs/acid/.htaccess

(Esta en blanco..) y ponemos lo siguiente:

AuthName ?Acid Access?
AuthType Basic
AuthUserFile /var/www/htdocs/acid/htpasswd.users
require valid-user

Guardar, salir y listo.


Paso 7:

Editamos el access de apache;

root@Homelesshacker # gedit /etc/apache/access.conf

y agregamos:


AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI


al final o donde quieran... guardar, salir

ahora editamos httpd.conf:

root@Homelesshacker # gedit /etc/apache/httpd.conf

y modificamos el user y group por:

User web

Group web

guardar, salir..

Para terminar, reiniciamos apache:

root@Homelesshacker # apachectl restart

o si no esta arrancado:

root@Homelesshacker # apachectl start

Paso 8:

Activamos el snort:

root@Homelesshacker # snort -devyq -c /etc/snort/snort.conf -l /var/log/snort/ -D

y lo añadimos a rc.local (script bash de arranque-.-) para que arranque cada vez que se reinicia:

root@Homelesshacker # echo snort -devyq -c /etc/snort/snort.conf -l /var/log/snort/ -D >> /etc/rc.d/rc.local

Para ver las estadisticas en el acid pongan en el navegador:

http://localhost/acid

Y listo.



Usando snort a mano:

Es muy sencillo e intuitivo, ponemos el snort a snifar el trafico de la interfaz deseada, en este caso eth0:

Homelesshacker@Homelesshacker $ snort -c /var/log/snort -i eth0

Listo, esto registrará todas las alertas de ataques, scaneos, etc. en los logs. Para verlo no hay mas que

Homelesshacker@Homelesshacker $ cd /var/log/snort
Homelesshacker@Homelesshacker $ ls
y obtendran un resultado como este:

192.168.0.2/ 200.129.x.x/ alert



Configuracion avanzada:

Snort se basa en reglas para detectar los intentos de ataques, estas reglas se pueden crear manualmente o descargar y cargar de la siguiente manera:

root@Homelesshacker # wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_os/snortrules-snapshot-CURRENT.tar.gz

Creamos un dir para las reglas:

root@Homelesshacker # mkdir /etc/snort/rules

Descomprimimos:

root@Homelesshacker # tar -zxvf snortrules-snapshot-CURRENT.tar.gz

Movemos al directorio recien creado:

root@Homelesshacker # cp * /etc/snort/rules

root@Homelesshacker # cd /etc/snort
root@Homelesshacker # gedit snort.conf

y lo modificamos de la siguiente forma:


var HOME_NET 192.168.126.0/24
var EXTERNAL_NET !$HOME_NET
var RULE_PATH /etc/snort/rules

--------include classification.config --> include
$RULE_PATH/../classification.config
--------include reference.config --> include $RULE_PATH/../reference.config


Y despues de la linea preprocessor stream4_reassemble agregar lo siguiente:

preprocessor stream4_reassemble: both,ports 21 23 25 53 80 110 111 139
143 445 513 1433



Descomentamos la linea:

output database: log, mysql, user=snort password=snort dbname=snort host=localhost


Guardar... cerrar..


Ahora le cambiamos el propietario/grupo al dir de las reglas:

root@Homelesshacker # chown -R snort.snort /etc/snort/rules

Y listo.


Actualización automatica:

Instalar y Configurar OinkMaster para actualizar automaticamente snort
Descargamos oinkmaster desde sourceforge y lo descomprimimos
cd /root/snortinstall
wget http://superb-west.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
tar -zxvf oinkmaster-2.0.tar.gz

Copiamos el archivo oinkmaster.pl a /usr/sbin/ y el archivo
oinkmaster.conf lo copiamos en /etc/
cd /root/snortinstall/oinkmaster-2.0/
cp oinkmaster.pl /usr/sbin/
cp oinkmaster.conf /etc/

le cambiamos los permisos a esos archivos:

chmod +x /usr/sbin/oinkmaster.pl
chmod 755 /etc/snort ????

entramos en la pagina de snort: http://www.snort.org y entramos con
nuestra cuenta de snort,
despues del acceso, nos dirigimos a la parte inferior de la pagina y
presionamos el boton "Get Code"
copiamos ese codigo y luego editamos el archivo /etc/oinkmaster.conf asi:
debemos copiar el codigo de seguridad generado anteriormente y
reemplazarlo donde dice


#url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-CURRENT.tar.gz
url = http://www.snort.org/pub-bin/oinkmaster.cgi/79a09e5e6d8531a8f34bc582167ab4ecb469bfcb/snortrules-snapshot-CURRENT.tar.gz

Como superusuario le ponemos una contrasena al usuario snort:
su -
passwd snort

Luego ejecutamos la actualizacion:
sudo -u snort /usr/sbin/oinkmaster.pl -o /etc/snort/rules

Para programar la actualizacion todos los dias a las 7:30, agregamos
la siguiente linea al archivo /etc/crontab:
30 7 * * * snort /usr/bin/oinkmaster.pl -o /etc/snort/rules




Y bueno, con eso ya tienen el snort funcionando adecuadamente, con las reglas cargadas y actualizandose solito salu2.

Hijackthis y su modo de uso

Hijackthis es un programa que examina ciertas areas del registro de Windows y el disco duro y lista sus contenidos. Estas areas son usadas tanto por software legitimo como por software peligroso.

Se trata de una herramienta orientada a usuarios avanzados. El programa genera un Log que puede ser guardado como archivo de texto para que acá en el foro te lo analicen y te digan qué debes hacer al momento de tener problemas con tu PC.


Primero de todo que es un Log ?
Un log para este caso, es un reporte del scaneo que ha hecho nuestra herramineta, es el resultado estampado en un editor de texto, que por defecto es el notepad.

Una vez con el log a nuestro alcance, llega el momento clave: analizarlo....



Como se puede observar en el log, cada línea o ítem va precedida de una letra más uno ó dos números y hacen referencia a lo sgte.:

R0, R1, R2, R3: URLs de páginas de inicio/búsqueda en el navegador Internet Explorer (IE).

F0, F1, F2, F3: Programas cargados a partir de ficheros *.ini (system.ini, win.ini...).

N1, N2, N3, N4: URLs de páginas de inicio/búsqueda en Mozilla.

O1: Redirecciones mediante modificación del fichero HOSTS.

O2:
BHO (Browser Helper Object); pueden ser plugins para aumentar las funcionalidades de nuestro navegador, pero también pueden deberse a aplicaciones maliciosas.

O3: Toolbars para IE.

O4: Aplicaciones que se cargan automáticamente en el inicio de Windows, bien mediante las claves oportunas en el registro, bien por aparecer en la carpeta del grupo Inicio.

O5:Opciones de IE no visibles desde Panel de Control.

O6: Acceso restringido -por el Administrador- a las Opciones de IE.

O7: Acceso restringido -por el Administrador- al Regedit.

O8: Items extra encontrados en el menú contextual de IE.

O9: Botones extra en la barra de herramientas de IE, así como ítems extra en el apartado Herramientas de IE (no incluídas en la instalación por defecto).

O10: Winsock hijackers.

O11: Adición de un grupo extra en las Opciones Avanzadas de IE (no por defecto).

O12: Plugins para IE.

O13: Hijack del prefijo por defecto en IE.

O14: Hijack de la configuración por defecto de IE.

O15: Sitios indeseados en la zona segura de IE.

O16: Objetos ActiveX

O17: Hijack de dominio / Lop.com

O18: Protocolos extra / Hijack de protocolos

O19: Hijack de la hoja de estilo del usuario.

Veamos cada ítem con algo más de detalle:

Grupo R0, R1, R2, R3:
URLs de páginas de inicio/búsqueda en el navegador Internet Explorer (IE).
Si reconocemos las URL hacia las que apuntan R0 y R1 (R2 ya no es utilizado) como válidas, podemos dejarlas tal cual. Si por el contrario son nocivas o tenemos fundadas sospechas de que puedan serlo, es conveniente seleccionarlas y aplicar el "fix" de HJT.

Ejemplo de válidas:
R0 - HKCU\Software\Microsoft\Internet Explorer\Main,Start Page = http://www.google.com/
R1 - HKLM\Software\Microsoft\Internet Explorer\Main,Default_Page_URL = http://www.google.com/
Si veis que aparece un valor con "(obfuscated)" final, como puede ser el del sgte. ejemplo:
R1 - HKCU\Software\Microsoft\Internet Explorer\Main,Search Bar = res://C:\WINDOWS\System32\mbnmmc.dll/sp.html (obfuscated)
...es muy posible que se deba a algún spyware, empleando algún método de ocultación para dificultar el reconocimiento. En estos casos suele ser conveniente aplicar el "fix".

R3 hace referencia a Url Search Hook, que es usado cuando en el recuadro de direcciones del navegador

introducimos alguna pero sin especificar su protocolo (http://, ftp://). En estas ocasiones, el navegador trata de utilizar el protocolo adecuado por sí mismo, pero si el intento no es exitoso, acude a Url Search Hook para tratar de resolver los datos que le hemos introducido como URL. Esta información se encuentra en la sgte. clave del registro:
HKCU\Software\Microsoft\Internet Explorer\URLSearchHooks
Si el valor que os sale en esa clave es del tipo R3 - URLSearchHook: (no name) - {CFBFAE00-17A6-11D0-99CB-00C04FD64497}_ - (no file) ...con ese guión bajo final ( _ , resaltado en color para el ejemplo), suele ser conveniente hacer uso de Regedit para reparar a mano el nombre del valor,ya que HJT no puede solucionarlo en esos casos. No quitéis el valor numérico mostrado arriba, ya que es el empleado por defecto.,

Como norma general para R3, en caso de aparecer en el log, deberíamos indagar sobre la información mostrada. Si es referente a un programa que nosotros hemos instalado (el multibuscador Copernic, por ejemplo) y fuera de confianza, no pasa nada; pero en caso de ser algo sospechoso, lo indicado es aplicarle el "fix".
---------------------------------------------------------------------------------------------------------------
Grupo F0, F1, F2, F3:

Programas cargados a partir de ficheros *.ini (system.ini, win.ini...).

Hay reportados problemas graves para arrancar el sistema si tras fijar uno de estos ítems (especialmente F2) se ha llevado a cabo la restauración de un backup propio de HJT en su versión 1.97.7 (la actual) ...sed muy cautos por tanto y valorad los riesgos previamente. Aunque desde Nautopía recomendamos el uso de ERUNT para tales fines y probablemente solventase el problema, no nos hemos visto en situación de poder comprobarlo en la práctica ante esta situación concreta. Ahí queda el aviso...
F0: en caso de que aparezcan, desde Merijn.org recomiendan aplicarles siempre el "fix".

Su información procede de shell= en system.ini. En condiciones normales, esta ubicación indica el gestor del entorno gráfico del sistema, el responsable de cargar el escritorio al inicio del windows y permitir manejarnos con ventanas (si se me permite la licencia del símil, "las X" del mundo linux). Como habréis adivinado, nos referimos al explorer.exe ...pero (y este es el quid de la cuestión), si tras explorer.exe tenemos un morralla.exe, se cargará igalmente al iniciar nuestro win. Todo lo que encontréis aquí tras explorer.exe, se convierte en altamente sospechoso.
---------------------------------------------------------------------------------------------------------------
F1: suelen deberse a programas muy antiguos y lo indicado es buscar información sobre ellos para decidir si son sospechosos o no.
Su información procede del win.ini, concretamente de Run= o Load=; el primero se empleaba con antiguos programas para que se cargaran con el arranque de win (hablamos de Win 3.1/95/98), pero hoy no es habitual; el segundo se empleaba para cargar controladores de hardware.
El listado Pacman's Startup List os puede servir a nivel orientativo para identificar ejecutables.
---------------------------------------------------------------------------------------------------------------
F2 y F3 vienen a utilizar el equivalente de los anteriores pero en los windows de núcleo NT (Win NT/2000/XP), que no suelen hacer uso de system.ini/win.ini del modo tradicional; estamos hablando de entradas en el registro:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
La primera se emplea para permitir la compatibilidad hacia atrás con aplicaciones de uso en los Win 9x. Mediante la función IniFileMapping se ha colocado en el registro cada línea aparecida en el fichero .ini, de manera que al utilizar un programa que haga uso de él, va a buscarse primero la equivalencia en el registro.

La segunda cadena nos habla de lo que se carga inmediatamente después de que el usuario se loguea al iniciar el sistema. Userinit.exe se encuentra en C:\WINNT\system32 o en C:\WINDOWS\system32, según el Win que empleemos (a lo largo del artículo, indicaremos C:\WINNT o C:\WINDOWS como [**]); su función es meter el perfil de cada usuario tras el login.
En este caso el problema viene si aparece un morralla.exe (treta frecuente de ver en troyanos) tras userinit:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit =[**]\system32\userinit.exe,[**]\morralla.exe

Esto se ve en la información del valor userinit, picando dos veces sobre él desde regedit; estaría de la sgte.manera, separado simplemente por una coma :
Userinit = [**]\system32\userinit.exe, [**]\morralla.exe

No preocuparos si bajo Win NT encontráis el valor por defecto: userinit,nddeagnt.exe, es normal bajo ese sistema. Pero cualquier otro ejecutable es altamente probable que se trate de morralla y/o troyano.

Grupo N1, N2, N3, N4:
URLs de páginas de inicio/búsqueda en Mozilla.

N1, N2, N3, N4 corresponden respectivamente a las páginas de inicio/búsqueda de Netscape v4, v6, v7 y Mozilla. Estos datos se encuentran en el fichero prefs.js, habitualmente localizado en el directorio del navegador.
El uso de estos navegadores no está tan extendido como el de IE y por tanto, están menos expuestos a la acción de morralla especializada; sin embargo, haberla hayla (de la extensa familia Lop.com por ejemplo). Si os aparece una entrada de este nivel y no la reconocéis como vuestra página deseada de inicio/búsqueda, lo indicado es marcarla y aplicarle el "fix" de HJT.
---------------------------------------------------------------------------------------------------------------

O1: Redireccionamientos por modificación del fichero HOSTS

El fichero HOSTS lo podemos encontrar en diversas ubicaciones según el windows empleado. Se localiza en C:\WINDOWS\ en los Win 9x/Me y en [**]\SYSTEM32\DRIVERS\ETC\ en los Win NT/2000/XP/2003.

Mediante el fichero HOSTS es posible asociar IPs con dominios. En condiciones normales, puede ser empleado si queremos evitar el acceso a determinados dominios que sabemos problemáticos, simplemente editando a mano el fichero HOSTS y asociando nuestra dirección localhost 127.0.0.1 con el dominio indeseable. Ejemplo: 127.0.0.1 www.dominioindeseable.com ...al hacerlo, si introducimos esa dirección en el navegador, nuestro equipo primero la buscará en el fichero HOSTS y al encontrarla, se evitará resolverla externamente mediante DNS.

De esta manera evitamos que se pueda acceder a dicho dominio indeseable.
Sin embargo, puede ser empleado con fines maliciosos por la morralla que tratamos de combatir en este artículo, sencillamente dándole la vuelta a la tortilla: si en lugar de localhost se emplea una IP determinada (llamémosla IP morralla) para direcciones de uso habitual, por ejemplo www.google.com, cada vez que introduzcamos la dirección de google en nuestra barra de direcciones, seremos llevados a la página de la IP morralla. Esto redireccionamiento suele ser frecuente de ver por parte de los hijackers.

Si el ítem O1 nos muestra una IP que no se corresponde con la dirección, podemos marcarla y aplicarle el "fix" de HJT.
Si nos muestra O1 - Hosts file is located at C:\Windows\Help\hosts ...casi con toda probabilidad estamos delante de una infección por CoolWebSearch (CWS), en cuyo caso conviene aplicarle el "fix", aunque mejor si previamente lo intentamos con herramientas específicas contra CWS como pueden ser (en este orden) delcwssk y CWShredder
---------------------------------------------------------------------------------------------------------------

O2: BHO (Browser Helper Object)

Pueden ser plugins para aumentar las funcionalidades de nuestro navegador, perfectamente normales, pero también pueden deberse a aplicaciones morralla. Es preciso por tanto que el usuario investigue para comprobar el grado de sospecha.
En el listado de Tony Klein y colaboradores en Sysinfo, podréis encontrar referenciadas numerosas CLSID (class ID, el número entre llaves: {número class ID}). Las allí señaladas en Status como "X" son catalogadas de spyware, las "L" como normales o limpias.

Ejemplo normal:

O2 - BHO: (no name) - {06849E9F-C8D7-4D59-B87D-784B7D6BE0B3} - C:\Archivos de programa\Adobe\Acrobat 5.0\Reader\ActiveX\AcroIEHelper.ocx

Si introducís ese CLSID (06849E9F-C8D7-4D59-B87D-784B7D6BE0B3) en el buscador del listado, os lo mostrará catalogado como "L", es decir, normal, ya que está originado por nuestro Adobe Acrobat Reader.

Si por el contrario el resultado de vuestra búsqueda os lo mostrara como "X", ya sabéis que se trata de spyware y conviene aplicarle el "fix". Es preciso que en ese momento no tengáis abierta ninguna ventana del navegador e incluso así, a veces hay casos rebeldes. Si tras aplicar el "fix" veis que vuelve a salir en el listado, será preciso reiniciar en modo a prueba de fallos (modo seguro) para erradicarlo.

O3: Toolbars para IE

Definicion de toolbar:
Suelen ser un grupo de botones situados generalmente bajo la barra de herramientas del navegador, que pueden deberse a aplicaciones normales que tengamos instaladas, al integrarse de esa manera en nuestro navegador, aunque en ocasiones pueden ser producto de la presencia de BHO maliciosos.

Su ubicación en el resgistro depende de esta cadena: HKLM\Software\Microsoft\Internet Explorer\Toolbar

Ejemplo normal:

O3 - Toolbar: Web assistant - {0B53EAC3-8D69-4b9e-9B19-A37C9A5676A7} - C:\Archivos de programa\Archivos comunes\Symantec Shared\AdBlocking\NISShExt.dll

Como se ve en el ejemplo, esa toolbar está originada por el Norton Internet Security de Symantec.

Sin embargo, en caso de no reconocer el nombre mostrado, se puede acudir al mismo listado reseñado para los ítems O2 para tratar de salir de dudas respecto a su identidad. El procedimiento es el mismo: buscar en función del CLSID y comprobar si está referenciado como "X" (spyware) o "L" (limpio). En caso de ser spyware, conviene marcar el ítem y aplicar el "fix" de HJT.
---------------------------------------------------------------------------------------------------------------
O4: Aplicaciones de carga automática en inicio de Windows por Registro/grupo Inicio

La carga automática de estas aplicaciones viene dada por ciertas claves en el registro o por aparecer en directorios del grupo Inicio.
Claves del registro implicadas:

HKLM\Software\Microsoft\Windows\CurrentVersion
\RunServicesOnce
\RunServices
\Run
\RunOnce
\RunOnceEx
\Policies\Explorer\Run
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
HKCU\Software\Microsoft\Windows\CurrentVersion
\RunServicesOnce
\RunServices
\Run
\RunOnce
\Policies\Explorer\Run

Ejemplo:
O4 - HKCU\..\Run: [SystemSafe] C:\Archivos de programa\SSM\SysSafe.exe

Los directorios del grupo Inicio pueden tener estas ubicaciones:
C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio ...reflejado en el log de HJT como Global Startup; son programas que se cargan para el perfil de todos los usuarios.

Ejemplo:
O4 - Global Startup: TeleSA.lnk = C:\Archivos de programa\AVer Teletext\AVerSA.exe
R:\Documents and Settings\USUARIO\Menú Inicio\Programas\Inicio ...reflejado en el log de HJT como Startup: programas que se cargan sólo para el perfil de ese USUARIO.
Ejemplo:
O4 - Startup: Microsoft Office.lnk = C:\Archivos de programa\Microsoft Office\Office10\OSA.EXE

Al igual que para el Grupo F, ante la duda, el Pacman's Startup List os podría servir a nivel orientativo para identificarlos.
Si os encontráis con un ítem indeseable y deseáis aplicarle el "fix", no será exitoso mientras el proceso esté activo en memoria. En esos casos, primero debéis acudir al Administrador de Tareas para cerrar dicho proceso y poder luego actuar con HJT.
---------------------------------------------------------------------------------------------------------------
O5: Opciones de IE no visibles desde Panel de Control

En condiciones normales, las Opciones de Internet de IE son accesibles desde Panel de Control. Existe la posibilidad de no permitirlo (desaparecer su icono), añadiendo una entrada en el fichero control.ini ubicado en [**] (C:\WINNT o C:\WINDOWS, según versión del SO), lo que se reflejaría en el sgte. ítem del log de HJT:
O5 - control.ini: inetcpl.cpl=no
...pero este hecho, a menos que sea una acción intencionada del Administrador del Sistema (en cuyo caso lo dejaríamos tal cual), podría deberse a la acción de alguna aplicación morralla que de esta manera trate de dificultar que cambiemos las Opciones del IE. Si se trata de esto último, es conveniente aplicarle el "fix" de HJT.
---------------------------------------------------------------------------------------------------------------
O6: Acceso restringido -por el Administrador- a las Opciones de IE

Si el acceso está restringido por el Administrador o bien porque empleamos Spybot S&D y aplicamos su protección-bloqueo de las Opciones del IE (en Herramientas > Modificaciones de IE: Bloquear la configuración de la pág. de Inicio...), aparecerá un ítem como el sgte.:

O6 - HKCU\Software\Policies\Microsoft\Internet Explorer\Restrictions present

Si por ejemplo en ese mismo apartado de Spybot S&D no hemos marcado el casillero Bloquear el acceso... , observaríamos este otro:

O6 - HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel present
Si el acceso restringido (primer ítem de ejemplo) aparece y no se debe a medidas intencionadas por parte del Administrador y/o la acción preventiva de Spybot, suele ser conveniente aplicarle el "fix".
---------------------------------------------------------------------------------------------------------------
O7: Acceso restringido -por el Administrador- a Regedit

Cuando el acceso a Regedit está bloqueado mediante la correspondiente clave del registro (no es infrecuente en políticas de seguridad corporativas), se refleja en un ítem como el sgte.:
O7 - HKCU\Software\Microsoft\Windows\CurrentVersion\Pol icies\System, DisableRegedit=1

Salvo que lo anterior se deba a medidas tomadas intencionadamente por el Administrador (en cuyo caso ignoraríamos el ítem), es conveniente aplicarle el "fix" de HJT.
---------------------------------------------------------------------------------------------------------------
O8: Items extra en el menú contextual de IE

El menú contextual en IE es el que obtenéis al picar con el botón derecho sobre la web que estáis viendo. Os muestra diferentes ítems o líneas de selección y pueden deberse a aplicaciones normales, pero también a spyware. Las diferentes opciones en ese menú se albergan en la sgte. cadena del registro:
HKCU\Software\Microsoft\Internet Explorer\MenuExt
Ejemplo normal:
O8 - Extra context menu item: E&xportar a Microsoft Excel - res://C:\ARCHIV~1\MICROS~3\OFFICE11\EXCEL.EXE/3000

Pero si no reconocéis la aplicación responsable del ítem extra en el menú contextual y sospecháis que sea por morralla, podéis aplicarle el "fix" de HJT.
---------------------------------------------------------------------------------------------------------------
O9: Botones extra en la barra de herramientas de IE / Items extra en el apartado Herramientas de IE (no incluídas en la instalación por defecto)

Si tenéis botones extra en la barra de herramientas principal de IE o bien ítems extra en el menú Herramientas de IE (que no sean los incluídos en la instalación por defecto) y queréis deshaceros de ellos por sospechar que provengan de morralla, deberéis fijaros en este ítem O9 del log de HJT, que obtiene los datos de la sgte. cadena del registro: HKLM\SOFTWARE\Microsoft\Internet Explorer\Extensions
Ejemplos normales:

O9 - Extra button: Messenger (HKLM)
O9 - Extra 'Tools' menuitem: Windows Messenger (HKLM)
O9 - Extra button: AIM (HKLM)


En los normales no es preciso hacer nada, pero ante casos indeseables que queráis hacerlos desaparecer, el "fix" de HJT debería poder con ellos sin problemas.

---------------------------------------------------------------------------------------------------------------
O10: Winsock hijackers

En este apartado hay que ser extremadamente cautos o podéis dañar vuestra conexión a Internet. Desde la propia Merijn.org recomiendan, en caso de necesitar resolver reseñas mostradas en este ítem O10, emplear versiones modernas de Spybot S&D o la herramienta LSPFix de Cexx.org mejor que actuar con HJT . Es por ello que os remitimos a esas dos alternativas en vez de profundizar en este punto.
No os preocupéis si veis aquí referencias a algún módulo de vuestro antivirus. Puede ser normal en aquellos que actúan a nivel del winsock.
---------------------------------------------------------------------------------------------------------------
O11: Adición de un grupo extra en las Opciones Avanzadas de IE (no por defecto)

Estamos hablando de IE > Herramientas > Opciones > pestaña Opciones Avanzadas. Si ahí apareciera algún grupo extra, no perteneciente a los que trae por defecto, vendría reflejado (como los originales) en la sgte. cadena del registro: HKLM\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptionsDesde Merijn.org comentan que, de momento, sólo el hijacker CommonName añade sus propias opciones en la pestaña de avanzadas. En ese caso el ítem mostrado (morralla) sería como sigue:

O11 - Options group: [CommonName] CommonName
...si tenéis ese caso, marcadlo y aplicar el "fix" de HJT. Si es otro distinto, en principio se convierte en sospechoso y requerirá que busquéis información por la red acerca de su procedencia.
---------------------------------------------------------------------------------------------------------------
O12: Plugins para IE

En condiciones normales, la mayoría de plugins son de aplicaciones legítimas y están ahí para ampliar funcionalidades de IE.
Ejemplos normales:

O12 - Plugin for .spop: C:\Archivos de programa\Internet Explorer\Plugins\NPDocBox.dll
O12 - Plugin for .PDF: C:\Archivos de programa\Internet Explorer\Plugins\nppdf32.dll
Generalmente son normales, pero ante la duda, conviene buscar por la red su procedencia.
No obstante, se tiene reportado algún caso claro de morralla en este apartado como es el plugin de OnFlow, que se detecta fácil por su extension *.ofb; si os lo encontráis, conviene marcarlo y aplicar el "fix".
---------------------------------------------------------------------------------------------------------------

O13: Hijack del prefijo por defecto en IE

El prefijo por defecto en IE (IE DefaultPrefix), hace referencia a cómo son manejadas las URLs que introducimos en el casillero de direcciones del navegador IE, cuando no especificamos el protocolo (http://, ftp://, etc.). Por defecto IE tratará de emplear http://, pero es posible modificar este valor en el registro mediante la sgte. cadena:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\URL \DefaultPrefix\

De hecho, existen aplicaciones morralla que lo llevan a cabo, obligando al navegante incauto a llegar hacia donde no desea. Una de ellas, muy conocida, es el hijacker CoolWebSearch (CWS), que sustituye el DefaulPrefix por "http://ehttp.cc/?", de manera que cuando el usuario introduce "www.google.com", automáticamente es derivado a "http://ehttp.cc/?www.google.com", que es un site perteneciente a CWS. Como veis, avispados son.

Ejemplo nocivo de CWS:
O13 - WWW. Prefix: http://ehttp.cc/?...en estos casos, antes de emplear HJT, conviene utilizar herramientas específicas contra CWS como pueden ser delcwssk primero y CWShredder después (no olvidéis actualizarlo antes de aplicarlo). Pasar tras reiniciar el scan de HJT y comprobad si ha sido suficiente con ellas, aplicando finalmente el "fix" de HJT en caso necesario.

CWS tiene muchísimos dominios y es un listado en continua expansión; sed cuidadosos ahí fuera ;-)

Otros ejemplos morralla a los que podéis aplicar el "fix":
O13 - DefaultPrefix: http://www.pixpox.com/cgi-bin/click.pl?url=
O13 - WWW Prefix: http://prolivation.com/cgi-bin/r.cgi?
---------------------------------------------------------------------------------------------------------------

O14: Hijack de la configuración por defecto de IE

Hay una opción entre las muchas del IE, que es resetear los valores presentes y volver a la configuracion por defecto. Los valores de esta última, se guardan en el fichero iereset.inf, ubicado en [**]\inf y el problema puede aparecer si un hijacker modifica la información de dicho fichero porque, de esa manera, al resetear a la configuración por defecto, lo tendríamos presente de nuevo. En estos casos es conveniente aplicar el "fix".

Ejemplo morralla:
O14 - IERESET.INF: START_PAGE_URL=http://www.searchalot.com

No obstante, tened cuidado porque no todo lo que aparece en este ítem tiene que ser nocivo. A veces puede deberse a manipulaciones legítimas del Administrador de Sistemas, manufactura de equipos de ciertas marcas, corporativos, etc. En estos casos seguramente reconoceréis la URL mostrada y no será necesario ningún procedimiento.
---------------------------------------------------------------------------------------------------------------

O15: Sitios indeseados en la zona segura de IE

En IE la seguridad se establece por medio de zonas o y según éstas, la permisividad en términos de seguridad es mayor o menor. En niveles bajos de seguridad, es posible ejecutar scripts o determinadas aplicaciones que no están permitidos en niveles altos.

Es posible añadir dominios a unas zonas u otras (sitios de confianza/sitios restringidos), según nuestro grado de confianza en ellos y esto se recoge en la sgte. cadena del registro:

HKCU\Software\Microsoft\Windows\CurrentVersion\Int ernet Settings\ZoneMap\Domains

Si por ejemplo hemos añadido www.nautopia.net a los sitios de confianza, nos aparecería reflejado de esta manera en el ítem correspondiente de HJT:

O15 - Trusted Zone: www.nautopia.net
De igual manera puede aparecer, por ejemplo, el dominio de empresa de nuestro puesto de trabajo o cualquier otro que hayamos añadido conscientemente.

Pero puede darse el caso de que alguna compañía como AOL o morralla como CWS, introduzcan silentemente sus dominios dentro de los sitios de confianza, lo que podría verse reflejado de la sgte. manera:
O15 - Trusted Zone: http://free.aol.com
O15 - Trusted Zone: *.coolwebsearch.com
En el caso de CWS o en el de cualquier otro que no deseemos tener como sitio de confianza, le indicaremos a HJT su "fix".

O16: Objetos ActiveX

Los objetos ActiveX son programas descargados de alguna web y guardados en nuestro ordenador; por ello también se les denominan Downloaded Program Files. La ubicación de almacenamiento es [**]\Downloaded Program Files
Podemos encontrar ítems normales como el del sgte. ejemplo:

O16 - DPF: {D27CDB6E-AE6D-11CF-96B8-444553540000} (Shockwave Flash Object) - http://download.macromedia.com/pub/s...sh/swflash.cab

Y otros típicos de morralla que, con suerte, serán fácilmente identificables si muestran nombres sospechosos relacionados con porno, dialers, toolbars indeseadas o palabras claves como casino, sex, adult, etc.

Ejemplo:
O16 - DPF: {12398DD6-40AA-4C40-A4EC-A42CFC0DE797} (Installer Class) - http://www.xxxtoolbar.com/ist/softwa...06_regular.cab
En casos de morralla, podemos emplear tranquilamente el "fix" de HJT, pero si tras volver a escanear viéramos casos rebeldes que siguen presentes, sería necesario reiniciar en modo seguro (pulsando F8...) para proceder con su eliminación.
Spywareblaster de JavaCool cuenta en su base de datos con un numeroso listado de ActiveX maliciosos. Volvemos a recomendar su utilización preventiva.
---------------------------------------------------------------------------------------------------------------

O17: Hijack de dominio / Lop.com

En condiciones normales, cuando introducimos el nombre de un site en el navegador en lugar de su dirección IP, nuestro PC contacta con un servidor DNS para que resuelva correctamente el nombre del dominio. Sin embargo, puede darse el caso de que un hijacker cambie las DNS para que empleemos su propio servidor en lugar del servidor DNS habitual. Si lo llevan a cabo podrán redireccionarnos a donde les apetezca, apuntando nuestras peticiones hacia los dominios de su elección (no la nuestra).
Ejemplo normal:

O17 - HKLM\System\CCS\Services\Tcpip\..\{41BAB21B-F197-471E-8B00-F28668AB8782}: NameServer = 194.224.52.36,194.224.52.37

...decimos normal porque esas IPs corresponden a servidores DNS de un conocido ISP español y en estos casos no es preciso hacer nada. Es la situación más habitual, encontrar las DNS que nos proporciona nuestro ISP.

Para comprobar si son buenas o no, podéis hacer un whois con aplicaciones ex profeso o acudir a sites de fiar que ofrezcan ese servicio, como RIPE, ARIN, inclusive el propio Google. Ahora bien, si los resultados de nuestras pesquisas apuntan hacia morralla, les aplicaremos el "fix" con HJT.
---------------------------------------------------------------------------------------------------------------

O18: Protocolos extra / Hijack de protocolos

Es difícil explicar este apartado de una manera sencilla. A grosso modo, decir que nuestro SO emplea unos protocol drivers estándar para enviar/recibir información, pero algunos hijackers pueden cambiarlos por otros (protocolos "extra" o "no estándar") que les permitan en cierta manera tomar el control sobre ese envío/recepción de información.
HJT primero busca protocolos "no estándar" en HKLM\SOFTWARE\Classes\PROTOCOLS\ y si los encuentra, mediante la CLSID trata de obtener la información del path, también desde el registro:

HKLM\SOFTWARE\Classes\CLSID

Ejemplo morralla:

O18 - Protocol: relatedlinks - {5AB65DD4-01FB-44D5-9537-3767AB80F790} - C:\ARCHIV~1\ARCHIV~1\MSIETS\msielink.dll

Esta técnica no es de las más frecuentes de ver, pero puede ser empleada por conocida morralla como Huntbar -RelatedLinks- (la del ejemplo), CommonName -cn-, Lop.com -ayb-, inclusive CWS. Si los veis reseñados como tal en el ítem O18 de HJT, aplicadles el "fix".

---------------------------------------------------------------------------------------------------------------

O19: Hijack de la hoja de estilo del usuario

Según Merijn.org, en caso de aparecer en el log de HJT este ítem O19, coincidente con un navegador ralentizado y frecuentes pop-ups, podría ser conveniente aplicarle el "fix". Sin embargo, dado que hasta el momento sólo se tiene reportado a CWS como responsable, la recomendación es emplear contra él las herramientas específicas citadas anteriormente.

Señalar que puede haber usuarios que tengan prefijada una hoja de estilo a su gusto, en cuyo caso no deberían prestar atención a este ítem.

---------------------------------------------------------------------------------------------------------------

Sección O20

Esta sección corresponde a los archivos que se cargan a través del valor del registro AppInit_DLLs.

El valor del registro AppInitDLLs contiene una lista de dlls (librerías) que se cargarán cuando user32.dll está cargando. Muchos ejecutables de Windows usan la librería user32.dll, lo que significa que cualquier DLL que esté listada en la llave del registro AppInit_DLLs también será cargada. Esto hace que sea muy difícil remover la DLL ya que estará cargando con múltiples procesos, muchos de los cuales no pueden ser detenidos sin causar inestabilidad en el sistema. El archivo user32.dll también es usado en procesos que inician automáticamente por el sistema cuando tu te logueas. Esto significa que los archivos cargados en el valor AppInit_DLLs serán cargados casi al inicio en la rutina de arranque de Windows permitiendo a la DLL esconderse o protegerse a sí misma antes que tengamos acceso al sistema.

Este método es conocido al ser usado por una variante de CoolWebSearch y sólo puede verse en Regedit dando click derecho sobre el valor, y seleccionando Modificar dato binario. Registrar Lite , por otra parte, puede ver más fácil esta DLL.

Llave del Registro: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows

Ejemplo de Lista O20 - AppInit_DLLs: C:\WINDOWS\System32\winifhi.dll

Existen muy pocos programas legítimos que usan esta llave del registro, pero debes proceder con cautela cuando borres los archivos que son listados aquí. Usa Google para investigar si los archivos son legítimos. También puedes usar las listas para ayudarte a verificar los archivos:

Bleeping Computer Startup Database
Castlecop's O20 List

Cuando arregles este tipo de entradas, HijackThis no borrará los archivos listados. Es recomendable que reinicies en Modo a Prueba de Fallo y borres los archivos.


---------------------------------------------------------------------------------------------------------------

Sección O21

Esta sección corresponde a los archivos que se cargan a través de la llave del registro ShellServiceObjectDelayLoad.

Esta llave contiene valores similares a los de la llave Run. La diferencia es que ésa en lugar de apuntar al archivo mismo, ésta señala al InProcServer del CLSID, el cuál contiene la información acerca del DLL en particular que se está usando.

Los archivos bajo esta llave son cargados automáticamente por Explorer.exe cuando tu computadora inicia. Como Explorer.exe es la shell para tu computadora, ésta siempre se va a cargar, así también cargando los archivos bajo esta llave. Estos archivos son por lo tanto cargados tempranamente en el proceso de inicio antes de que ocurra cualquier intervención humana.

Un hijacker que usa el método puede reconocerse por las siguientes entradas:

Ejemplo de Lista: R0 - HKCU\Software\Microsoft\Internet Explorer\Main,Start Page = C:\WINDOWS\secure.html
R1 - HKCU\Software\Microsoft\Internet Explorer\Main,Default_Page_URL = C:\WINDOWS\secure.html

Llave del Registro: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\ShellServiceObjectDelayLoad

Ejemplo de Lista O21 - SSODL: System - - C:\WINDOWS\system32\system32.dll

HijackThis usa una lista blanca interna para no mostrar las entradas legítimas comunes bajo esta llave. Si ves un listado para esto, entonces no es algo estándar y deberías considerarlo como sospechoso. Como siempre has una búsqueda en Google de cualquier DLL listada en estas llaves. También puedes usar las listas para ayudarte a verificar los archivos:
Bleeping Computer Startup Database
Castlecop's O21 List

Cuando arregles este tipo de entradas, HijackThis no borrará los archivos listados. Es recomendable que reinicies en Modo a Prueba de Fallo y borres los archivos.


---------------------------------------------------------------------------------------------------------------

Sección O22

Esta sección corresponde a los archivos que se cargan a través del valor del registro SharedTaskScheduler.

Las entradas en este registro se ejecutan automáticamente cuando inicias Windows. A la fecha sólo CWS.Smartfinder usa esta llave.

Llave del Registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Explorer\SharedTaskScheduler

Ejemplo de Lista O22 - SharedTaskScheduler: (no name) - - c:\windows\system32\mtwirl32.dll

Ten cuidado cuando remuevas los objetos listados en estas llaves ya que algunas son legítimas. Puedes usar Google para intentar determinar si éstas son válidas. CWS.Smartfinder puede ser removido con CWShredder. También puedes usar las listas para ayudarte a verificar los archivos:
Bleeping Computer Startup Database
Castlecop's O22 List

HijackThis borrará el valor asociado del SharedTaskScheduler con esta entrada, pero no borrará el CLSID al que apunta ni el archivo al que apunta el Inprocserver32 de CLSID. Por lo tanto, debería reiniciar en Modo a Prueba de Fallos y borrar manualmente este archivo.

---------------------------------------------------------------------------------------------------------------

O23: Servicios
Todos los servicios de Windows NT/XP/2000/2003

Se recomienda usar siempre algun buscador para verificar que la entrada sea o no legal de windows



Esto es todo espero k hayan aprendido algo acerca de hijackthis salu2.