Professional Documents
Culture Documents
1 de 19
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\
/*\ /*\
/*\ /*\
/*\ OCULTACION DE IPs /*\
/*\ /*\
/*\ aule@mixmail.com Aule /*\
/*\ /*\
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/
1. Introduccion
2. Proxys
3. Wingates
4. Bouncer
5. IP-Spoofing
1- Introduccion
Seguro que habeis oido hablar o leido en algun texto cosas como un Bouncer
un Wingate o un Proxy pero es facil que no lo tengais muy claro o que
tengais alguna duda, porque estos terminos se confunden bastante amenudo
04/02/2016 03:20 p.m.
Ocultacin de IP's
2 de 19
Ocultacin de IP's
3 de 19
_WinGate>NICK Aule
Connecting to host NICK...Host name lookup for 'NICK' failed
USER aule "pss" "wiley231h038.roadrunner.nf.net" The truth is out
there...
Connecting to host USER aule "pss" "wiley231h038.roadrunner.nf.net"
...Host name lookup for 'USER aule "pss"
"wiley231h038.roadrunner.nf.net" ' failed
2 /raw dubhe.irc-hispano.org 6667
-> Server: dubhe.irc-hispano.org 6667
Connecting to host dubhe.irc-hispano.org...Connected
3 /raw nick Aule
-> Server: nick Aule
PING? PONG!
4 /raw user taigual kemasda el@mio.com ikepasa
-> Server: user taigual kemasda el@mio.com ikepasa
Welcome to the Internet Relay Network Aule
Your host is dubhe.irc-hispano.org[dubhe.acn.es], running version
u2.10.06.24.(nullchan)
This server was created Mon Aug 16 1999 at 00:57:47 EDT
dubhe.irc-hispano.org u2.10.06.24.(nullchan) dioswkg biklmnopstv
Bueno y ya tamos dentro del irc usando un wingate :) tambien se puede usar
el comando QUOTE en lugar de RAW y los puntos 3 y 4 pueden ir en orden
contrario. Si te sientes intrigado por que es lo que has hecho hazte un
whois y seguro que lo comprenderas.
Tambien existen lo que son los socks que permiten el acceso al IRC atraves
de la maquina Wingate pero por el puerto 1080. Con del mIRC su uso es de lo
mas sencillo no tienes mas que indicarle al mIRC que usas a la maquina con
el Wingate como un firewall y el puerto que usas para acceder a el, el 1080.
Esto se hace en la ventana del setup del mIRC en la pestaa que pone
firewall, hay distintas casillas, en la del host ponemos la direccion del
Wingate, puerto 1080 que ya viene por defecto, y pulsamos los socks,bueno...
y conectar con el server de IRC como haces siempre. La diferencia de
hacerlo asi es que si realizamos un DCC con otro usuario este va conocer
nuestra autentica IP
Si eres un poco inteligente entenderas que con esto te puedes saltar cosas
como un G-LINE y un KILL o bans en canales donde no te has portado bien :P
Ademas si alguien te esta intentando nukear lo tiene mucho mas dificil
porque intentara nukear al server del wingate no tu ordenador.
Decir por ultimo del wingate en el IRC, que en la red hispano.org el uso de
wingates esta en vias de extincion :(( pero esto no es el tema de este txt
Ocultacin de IP's
4 de 19
Bueno sigamos con nuestro amigo Wingate como dije antes el programa habre el
puerto 23 y permite acceder a el sin pedirnos pass, con lo cual lo podemos
usar para saltar a otras maquinas. Esto es lo que seria hacer Bouncing pero
lo explico en este apartado por que es atraves de un wingate.
Como dije antes no todos los Proxys usan el mismo software, existen
distintos programas que usan estos servers cada uno tiene sus propios fallos
de seguridad, pero vamos a diferenciar que tipo de soft se trata:
- Winproxy
realizamos un telnet al server
--------------------------------------------------Trying 195.76.206.157...
Connected to 195.76.206.157.
Escape character is '^]'.
Enter : <host> [port] :
---------------------------------------------------para estar seguros conectamos al ftp (puerto 21)
-----------------------------------------------------Connected to 195.76.206.157.
220 WinProxy FTP Gateway ready, enter username@host[:port]
----------------------------------------------------esta claro que es un winproxy
- Wingate
Esta claro el conocido Wingate :)
Las ultimas versiones vienen parcheadas para que no se pueda
acceder desde el exterior
Realizamos un telnet y vemos clarito el prompt
--------------------------------------------------Trying 195.76.206.62...
Connected to 195.76.206.62.
Escape character is '^]'.
WinGate>
--------------------------------------------------FTP
-----------------------------------------------------Connected to 195.76.206.62.
220 WinGate V1.3 FTP Gateway ready, enter user@host[:port]
-----------------------------------------------------sed buenos.... si podeis :P
- S-Proxy
Este es soft espaol!
Ocultacin de IP's
5 de 19
Telnet
---------------------------------------------------Trying 194.75.196.77...
Connected to 194.75.196.77.
Escape character is '^]'.
Host:
---------------------------------------------------Para reconocerlo correctamente FTP
------------------------------------------------------Connected to 194.75.196.77.
220 S-Proxy preparado para recibir.
------------------------------------------------------cuando realizamos telnet solo nos deja hacerlo al puerto 23 lo que
aumenta su seguridad pero nos permite Bouncear igualmente :)
Creo que ya sabeis que es lo que se puede hacer con esto.. al hacer un
telnet al wingate podemos saltar a cualquier otra maquina
wingate> telnet mi.vecino.es 23
La ventaja es clara... no nos conectamos a la maquina de mi.vecino.es desde
nuestro ordenador si no desde el del wingate quedando en la maquina de
mi.vecino.es la IP del wingate y no la nuestra :P
Pero no todo es tan facil :( en la maquina del wingate pueden quedar los
logs asi que andar con cuidado
4- Bouncer
Como la tecnica explicada en el apartado anterior existe alguna otra manera
de hacer bouncing. Creo que ya entendeis lo que es bouncing pero bueno....
mi maquina Bouncer objetivo
A ----------> B -----------> C
El bouncer puede ser como el caso anterior un wingate mal configurado o un
programa colocado en la maquina B por una mano un tanto "inocente"
Bouncing se puede hacer en maquinas Unix haciendo correr un daemond que
nosotros hallamos colocado (ojo con el root!) solo le indicaremos el puerto
por el que nosotros entraremos y la maquina y puerto al que "saltamos"
Esto se puede usar para conectarse al IRC de forma mas segura o para otros
menesteres ;>
Aqui os dejo un Bouncer para acceder al IRC:
--------------cut------------/* Distribution: Public */
/* Copyright: Held by the respective contributors */
/* Posted to USENET September '93 by Mark mark@cairo.anu.edu.au */
Ocultacin de IP's
6 de 19
/* This file was telserv.c, part of the Telnet Server package v. 1.0,
written by "Hal-9000". Much of that package was developed by Richard
Stephens and his thanks go to "Xanadude" for providing him with that
section. Performance fix by Darren Reed. */
/* Reworked to add concurrency, password checking and destination selection
on the fly. - Mark 31st Aug 93
Now its a IRC bouncer - riley Nov 93.
Compiled and tested on:
HPUX 9.01 9000/700 series NeXTStep 3.1 NeXT 68040
OSx Pyramid 90x BSD universe SunOS 5.2 sun4c
Ultrix 4.3 DEC RISC
To compile, type "cc -O -s ts2.c -o ts2".
*/
Ocultacin de IP's
7 de 19
Ocultacin de IP's
8 de 19
}
void telcli(source)
int source;
{
int dest;
int found;
struct sockaddr_in sa;
struct hostent *hp;
struct servent *sp;
char gethost[100];
char getport[100];
char string[100];
hp = gethostbyname(IRCSERV);
if (hp) {
found++;
#if !defined(h_addr) /* In 4.3, this is a #define */
#if defined(hpux) || defined(NeXT) || defined(ultrix) || defined(POSIX)
memcpy((caddr_t)&sa.sin_addr, hp->h_addr_list[0], hp->h_length);
#else
bcopy(hp->h_addr_list[0], &sa.sin_addr, hp->h_length);
#endif
#else /* defined(h_addr) */
#if defined(hpux) || defined(NeXT) || defined(ultrix) || defined(POSIX)
memcpy((caddr_t)&sa.sin_addr, hp->h_addr, hp->h_length);
#else
bcopy(hp->h_addr, &sa.sin_addr, hp->h_length);
#endif
#endif /* defined(h_addr) */
} else {
if (inet_addr(gethost) == -1) {
found = 0;
sprintf(string, "Didnt find address for %s\r\n", gethost);
write(source, string, strlen(string));
} else {
found++;
sa.sin_addr.s_addr = inet_addr(gethost);
}
}
sa.sin_family = AF_INET;
sa.sin_port = htons((unsigned) IRCPORT);
if (sa.sin_port == 0) {
sp = getservbyname(getport, "tcp");
if (sp)
sa.sin_port = sp->s_port;
else {
sprintf(string, "%s: bad port number\r\n", getport);
write(source, string, strlen(string));
return;
}
Ocultacin de IP's
9 de 19
}
if ((dest = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("telcli: socket");
exit(1);
}
connect(dest, (struct sockaddr *) &sa, sizeof(sa));
#ifdef FNDELAY
fcntl(source,F_SETFL,fcntl(source,F_GETFL,0)|FNDELAY);
fcntl(dest,F_SETFL,fcntl(dest,F_GETFL,0)|FNDELAY);
#else
fcntl(source,F_SETFL,O_NDELAY);
fcntl(dest,F_SETFL,O_NDELAY);
#endif
communicate(dest,source);
close(dest);
exit(0);
}
communicate(sfd,cfd) {
char *chead, *ctail, *shead, *stail;
int num, nfd, spos, cpos;
extern int errno;
fd_set rd, wr;
chead = ctail = cbuf;
cpos = 0;
shead = stail = sbuf;
spos = 0;
while (1) {
FD_ZERO(&rd);
FD_ZERO(&wr);
if (spos < sizeof(sbuf)-1) FD_SET(sfd, &rd);
if (ctail > chead) FD_SET(sfd, &wr);
if (cpos < sizeof(cbuf)-1) FD_SET(cfd, &rd);
if (stail > shead) FD_SET(cfd, &wr);
nfd = select(256, &rd, &wr, 0, 0);
if (nfd <= 0) continue;
if (FD_ISSET(sfd, &rd)) {
num=read(sfd,stail,sizeof(sbuf)-spos);
if ((num==-1) && (errno != EWOULDBLOCK)) return;
if (num==0) return;
if (num>0) {
spos += num;
stail += num;
if (!--nfd) continue;
}
}
if (FD_ISSET(cfd, &rd)) {
num=read(cfd,ctail,sizeof(cbuf)-cpos);
if ((num==-1) && (errno != EWOULDBLOCK)) return;
if (num==0) return;
Ocultacin de IP's
10 de 19
if (num>0) {
cpos += num;
ctail += num;
if (!--nfd) continue;
}
}
if (FD_ISSET(sfd, &wr)) {
num=write(sfd,chead,ctail-chead);
if ((num==-1) && (errno != EWOULDBLOCK)) return;
if (num>0) {
chead += num;
if (chead == ctail) {
chead = ctail = cbuf;
cpos = 0;
}
if (!--nfd) continue;
}
}
if (FD_ISSET(cfd, &wr)) {
num=write(cfd,shead,stail-shead);
if ((num==-1) && (errno != EWOULDBLOCK)) return;
if (num>0) {
shead += num;
if (shead == stail) {
shead = stail = sbuf;
spos = 0;
}
if (!--nfd) continue;
}
}
}
}
--------------cut------------tambien os dejo otro Bouncer con acceso atraves de una pass, para que ningun
listillo se aproveche de vuestro trabajo colocando un Bouncer y usandolo el.
--------------cut------------/* Virtual Hostname/Machine IRC Bouncer
*** Includes:
-choose any irc server after connect!
-virtual hostnames...duh!
-password protected after connnect.
*** Future Plans: To make it so it allows more than one connect.
*/
/* INSTRUCTIONS FOR USE: First, type export IRC_HOST=your.irc.host
Next, Type ./vhost <port num> eg. ./vhost 9090 */
/* DEFINES */
#define password "darkk"
Ocultacin de IP's
11 de 19
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <netdb.h>
extern h_errno;
/* SunOS 4.1.4 is really lame and doesn't define this */
#ifndef INADDR_NONE
#define INADDR_NONE -1
#endif
struct in_addr LocalHostAddr;
/* m_strdup stolen from ircII epic */
/* changed to default malloc instead of ircII epic's new_malloc routine */
/* Hope it doesn't create any adverse affects */
char *m_strdup (const char *str)
{
char *ptr;
char empty_string[] = "";
if (!str)
str = empty_string;
ptr = (char *)malloc(strlen(str) + 1);
return strcpy(ptr, str);
}
int do_connect(char *hostname, u_short port)
{
int s = -1;
struct hostent *he;
struct sockaddr_in sin;
struct sockaddr_in localaddr;
s = socket(AF_INET, SOCK_STREAM, 0);
if(s < 0)
return -2;
/* bind to the local address, this was a pain in the ass to understand */
memset(&localaddr, 0, sizeof(struct sockaddr_in));
Ocultacin de IP's
12 de 19
localaddr.sin_family = AF_INET;
localaddr.sin_addr = LocalHostAddr;
localaddr.sin_port = 0;
if (bind(s, (struct sockaddr *)&localaddr, sizeof(localaddr)))
return close(s), -2;
/* now connect from the address.. fun for the entire family. */
memset(&sin, 0, sizeof(struct sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sin.sin_addr.s_addr = inet_addr(hostname);
if(sin.sin_addr.s_addr == INADDR_NONE)
{
he = gethostbyname(hostname);
if(!he)
return -1;
memcpy(&sin.sin_addr, he->h_addr, he->h_length);
}
if(connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0)
{
close(s);
return -2;
}
return s;
}
void server(int s)
{
int sock_c=-1;
int maxfd = s+1;
char buffer[1024];
char user[1024];
char nick[1024];
fd_set rset;
u_short myport;
char *cmd, *server, *port, *passwd;
char myserver[1024];
memset(buffer, 0, 1023);
if(read(s, buffer, 1024) <= 0)
{
close(s);
return;
}
if(!strncmp(buffer, "USER", 4))
strcpy(user, buffer);
else
strcpy(nick, buffer);
memset(buffer, 0, 1024);
Ocultacin de IP's
13 de 19
Ocultacin de IP's
14 de 19
if(!passwd)
continue;
if((strcmp(passwd, password) != 0))
{
sprintf(buffer, "NOTICE usr :*** Password Invalid. UNAUTHORIZED ACCESS IS PROHIBITED \n");
write(s, buffer, strlen(buffer));
continue;
}
server = strtok(NULL, " \n\r");
if(!server)
continue;
strcpy(myserver, server);
port = strtok(NULL, " \n\r");
if(!port)
port = "6667";
myport = atoi(port);
sock_c = do_connect(myserver, myport);
if(sock_c < 0)
sock_c = -1;
write(sock_c, user, strlen(user));
write(sock_c, nick, strlen(nick));
memset(buffer, 0, 1024);
read(sock_c, buffer, 1023);
if(strlen(buffer) > 0)
{
write(s, buffer, strlen(buffer));
}
continue;
}
}
if(sock_c >= 0)
{
if(FD_ISSET(sock_c, &rset))
{
memset(buffer, 0, 1024);
if(read(sock_c, buffer, 1023) <= 0)
{
close(s);
close(sock_c);
return;
}
write(s, buffer, strlen(buffer));
}
}
}
}
int
main(int argc, char *argv[])
Ocultacin de IP's
15 de 19
{
int a_sock = 0;
int s_sock = 0;
char *LocalHostName = NULL;
char *ptr = NULL;
char hostname[81];
struct hostent * hp;
int dport;
struct sockaddr_in sin;
int sinlen;
int xx;
int mypid;
if(argc >= 2) dport=atoi(argv[1]); else dport=9090;
if ((ptr = getenv("IRC_HOST")) || (ptr = getenv("IRCHOST")))
LocalHostName = m_strdup(ptr);
if ((gethostname(hostname, sizeof(hostname))))
if (!LocalHostName)
exit(1);
printf("Virtual host ircgate, *hop* Hold on..\n");
printf("Attempting to bind on port: %d\n",dport);
if (LocalHostName)
{
printf("Attempting to bind on host: %s\n", LocalHostName);
memset((void *)&LocalHostAddr, 0, sizeof(LocalHostAddr));
if ((hp = gethostbyname(LocalHostName)))
memcpy((void *)&LocalHostAddr, hp->h_addr, sizeof(LocalHostAddr));
}
else
{
if ((hp = gethostbyname(hostname)))
memcpy((char *) &LocalHostAddr, hp->h_addr, sizeof(LocalHostAddr));
}
s_sock = socket(AF_INET, SOCK_STREAM, 0);
if(s_sock < 0)
{
perror("socket");
exit(0);
}
memset(&sin, 0, sizeof(struct sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_port = htons(dport);
sin.sin_addr.s_addr = INADDR_ANY;
if(bind(s_sock, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)) < 0)
{
perror("bind");
exit(0);
}
if(listen(s_sock, 10) < 0)
{
Ocultacin de IP's
16 de 19
perror("listen");
exit(0);
}
{
xx = fork(); /* Fork the process */
if (xx == -1) {
printf("FATAL ERROR: UNABLE TO FORK PROCESS!\n");
exit(1);
}
if (xx!=0) {
printf("Launched into the background [pid: %d]\n\n",xx);
setpgid(xx,xx);
exit(0);
}
setpgid(0,0);
/* No more TTY i/o for us! */
freopen("/dev/null","r",stdin);
freopen("/dev/null","w",stdout);
freopen("/dev/null","w",stderr);
while(1)
{
sinlen = sizeof(sin);
close(a_sock);
a_sock = accept(s_sock, (struct sockaddr *)&sin, &sinlen);
if(a_sock < 0)
{
perror("accept");
continue;
}
#ifdef MULTIPLE_OCCURANCES
switch(fork())
{
case -1:
continue;
case 0:
#endif
server(a_sock);
#ifdef MULTIPLE_OCCURANCES
exit(0);
}
/* Might want to set the last param to WNOHANG if it
hangs here... Careful, creates zombies if you do. */
while(waitpid(-1, NULL, NULL) > 0) ;
#endif
}
}
}
Ocultacin de IP's
17 de 19
--------------cut------------Para los usuarios Win y que no tengan una maquina Unix donde colocar estos
programas deciros que existen distintos programas Win para hacer Bouncer,
muchos de ellos los traen los scripts de IRC como el WANIRC del 7th sphere
explicado por Qva$aR en su txt "como saltarse una k-line" en
http://www.undersec.com o el famoso y conocido IRCap de GSi que incorpora un
bouncer hecho por el (los que sepais algo de scripting podeis mirar y
haceros uno a vuestro gusto). Existen mas programas de este tipo como el
WinBouncer muy faciles de configurar y que podeis usar para cualquier cosa
solo teneis que indicar los puertos y el host
Muchos direis que como utilizo yo un Bouncer si no tengo ninguna shell y
solo el PC de mi habitacion... pues para saltarse bans o jugar en el IRC
podeis hacerlo con algun inconsciente amiguete que os deje usar su ip :)
Si sois algo mas avispados o quereis hacer cosas mas interesantes en el
hacking podeis colocarlo en ordenatas de vuestro instituto, en la academia
donde estudiais, a ese pardillo que el otro dia a la noche estaba infectado
con el netbus etc etc ...
5- IP-Spoofing
Bueno llegamos a la parte mas dificil del texto seguro que la mayoria de
vosotros habeis oido hablar de esta tecnica o teneis idea de en que consiste
pero no lo teneis muy claro. Veamos el IP-Spoofing es una tecnica bastante
dificil y compleja que requiere bastantes conocimientos sobre todo del
protocolo TCP-IP
Explicandolo a la ligera podria decir que el IP-Spoofing consiste en engaar
a una maquina (host A) haciendole creer que somos otra maquina (host B) que
en realidad no somos
acceso
host B -------> host A
sin pass
Esta tecnica se basa en el procedimiento usado (mal usado) en algunos
sistemas de permitir el acceso sin una comprobacion atraves de contrasea y
utilizando la confianza en las direcciones IP
El server A tiene depositada confianza en el server B (trust host), conoce
la IP de este y no pide contrasea de entrada a su sistema desde esa maquina
Supongo que ya ireis cogiendo la idea no??? Para realizar esta tecnica es
necesario tener privilegios de Root desde la maquina que se realiza el
ataque. Ademas hay que tener encuenta una cosa que os puede pasar y que es
muy importante, cuando vosotros realizais el ataque modificais los paquetes
de datos cambiando en estos vuestra direccion IP y usando la del Trust host
(esto no se hace "a mano" lo realiza un software especifico para esta tarea,
seguid leyendo) debido a esto las respuestas que la maquina objetivo mande a
esa transmision TCP-IP no las recibireis vosotros sino el trust host pero no
os preocupeis por esto porque seran ignoradas al no haber el realizado la
conexion. El problema viene de que teneis que intuir las respuestas que
manda y tb el tiempo para realizar el siguiente envio de datos esto
dependera de la pericia de cada uno de vosotros :(
Ocultacin de IP's
18 de 19
Ocultacin de IP's
19 de 19