Los Caballeros

"Sobre seguridad, programación, modding, frikismo, etc... "

Diseño de reglas para Proxy Evasor (FHTTP v1.2)

Twitter icon Twitter icon
Vamos a comenzar explicando que opciones nos da la FHTTP para "diseñar reglas" para el proxy evasor de la FHTTP v1.2.

Para comenzar tenemos 2 métodos:
  • reglas.txt
  • proxymodulos.pm
siendo la primera la forma mas "fácil" (requiere conocimientos de regex) y la segunda la opción avanzada (requiere conocimientos de programación en perl).

La estructura de reglas.txt es la siguiente:

donde: pattern => replacement <!-- comentario 


Todo esto tiene que estar en una sola linea (sin saltos de linea)

"donde" sería que parte de la trama se editara, las opciones aceptadas son las siguientes:

  • url - La url de la consulta
  • reqline - La linea de consulta (por ejemplo: GET / HTTP/1.1).
  • header - Cada uno de los headers de forma individual (por ejemplo: Host: hackingtelevision.blogspot.com).
  • postdata - El Post data del envió (datos enviados en POST).
  • rheader - Todos los headers (incluyendo el reqline) de la respuesta pero no de forma individual.
  • rcontenido - Todo el contenido de la respuesta (obviamente excluyendo los headers)


el pattern es un regex de perl común y corriente con la diferencia de que si se usan tags html se tienen que cambiar por su respectivo valor en "html entitites", si se utilizan: \r o \n se tiene que agregar un escape adicional (\\r y \\n), esto es:
es diferente:

\r\n lo cual FHTTP convertiría en un CRLF real (y no para regex).
\\r\\n lo cual FHTTP convertiría en \r\n (y se utilizaría en el regex).

hay ligeras diferencias entre usar uno u otro xD...

El replacement al igual que en los regex clásicos de perl se pueden usar "grupos" por ejemplo:

reqline: ^GET(\s|\t)+ => POST $1 <!-- GET a POST

Se remplazaría por:

POST \t/ HTTP/1.1

(puesto que se utiliza una tabulacion en lugar de espacio).

Los pattern son case insensitive (insensible a mayusculas y minusculas).

Otro truco que podemos encontrar es en el "donde" por ejemplo:

rcontenido:nossl: window\.location\.replace\(([\s\\r\\n]*)"https:\/\/"([\s\\r\\n]*)\+([\s\\r\\n]*)window\.location\.hostname([\s\\r\\n]*)\+([\s\\r\\n]*)window\.location\.pathname([\s\\r\\n]*)\+([\s\\r\\n]*)window\.location\.hash([\s\\r\\n]*)\) => window.location.replace("http://"+window.location.hostname+window.location.pathname+"?&08dae2760be9fe48274a74c31fba5b0f"+window.location.hash) <!-- Twitter y otros :P

(regla para romper el "Solo HTTPS" de twitter xD...)

se esta usando el donde: "rcontenido:nossl" lo cual es solo se va a usar cuando este activado el "eliminar SSL".

Como verán es realmente fácil armar una regla para el proxy evasor de la FHTTP v1.2.

Ahora veremos rápidamente sobre el proxymodulos.pm.

sub uricall {
my $uri = $_[0];
$uri =~ s/^http:\/\/([\/]+)//g;
$uri = "/".$uri if($uri !~ /^\//);
return $uri;
}


Armada esta subrutina la agregamos al proxymodulos.pm y la agregamos a su respectiva "lista de callback" (@uricallbacks).

my @uricallbacks = (
uricall,
);

y listo, nuestra subrutina se ejecutara por cada uri (url).

De momento lo dejamos aqui, espero que les sea de utilidad y que próximamente veamos mas vídeos y papers publicados de mas usos de esta herramienta :P...


Bytez!