Разделы презентаций


Perl в хэке и хэки в Perl

Игры CTF (Capture the Flag) ICFP EACP (Extremely Advanced Computer Programming)YAPC::Russia 2009

Слайды и текст этой презентации

Слайд 1YAPC::Russia 2009
Докладчик:
Илья Зеленчук,
Perlсlub УрГУ (г. Екатеринбург)
Perl в хэке и хэки

в Perl

YAPC::Russia 2009Докладчик:Илья Зеленчук,Perlсlub УрГУ (г. Екатеринбург)Perl в хэке и хэки в Perl

Слайд 2Игры
CTF (Capture the Flag)
ICFP
EACP (Extremely Advanced

Computer Programming)
YAPC::Russia 2009

Игры CTF (Capture the Flag) ICFP EACP (Extremely Advanced       Computer Programming)YAPC::Russia

Слайд 3Perl в хэке
Простоя работа с сетью;
Удобен при написании

PoC;
Обфускация кода;
Генерация сложночитаемого С кода;
Затрудненный reverse.
YAPC::Russia 2009

Perl в хэке Простоя работа с сетью; Удобен при написании PoC; Обфускация кода; Генерация сложночитаемого С кода;

Слайд 4Пример игрового сервиса
YAPC::Russia 2009

Пример игрового сервисаYAPC::Russia 2009

Слайд 5Простой веб клиент
YAPC::Russia 2009
;

Простой веб клиентYAPC::Russia 2009;

Слайд 6Perl2C
... (3474 строки)
xpv_list[79].xpv_pv = savepvn("Hello, MayPerl\n", 15);
{
SV **svp;
AV *av =

(AV*)&sv_list[279];
av_extend(av, 2);
svp = AvARRAY(av);
*svp++ = (SV*)&PL_sv_undef;
*svp++ = (SV*)&PL_sv_undef;
*svp++ = (SV*)&sv_list[280];

AvFILLp(av)

= 2;
}
PL_curpad = AvARRAY((AV*)&sv_list[279]);
GvHV(PL_incgv) = (HV*)&sv_list[53];
... (150 строк)

YAPC::Russia 2009

Perl2C	... (3474 строки)	xpv_list[79].xpv_pv = savepvn(

Слайд 7Perl2bin
YAPC::Russia 2009

Perl2binYAPC::Russia 2009

Слайд 8Хэки в Perl
Простой сокет в Perl’e;
Sniffer под UNIX

без использования libpcap;
Прием/отправка пакетов и использованием raw socket;
Неблокирующие

сокеты.

YAPC::Russia 2009

Хэки в Perl Простой сокет в Perl’e; Sniffer под UNIX без использования libpcap; Прием/отправка пакетов и использованием

Слайд 9Perl sockets
#!/usr/bin/perl

use Socket;

socket $S, PF_INET, SOCK_STREAM, getprotobyname('tcp‘);
my $addr=sockaddr_in(80, inet_aton($ip));
connect

$S, $addr or die "Can't open connection: $!\n";

send $S, "GET

/ HTTP/1.0\r\n\r\n", 0;
print <$S>;

close $S;

YAPC::Russia 2009

Perl sockets #!/usr/bin/perluse Socket;socket $S, PF_INET, SOCK_STREAM, getprotobyname('tcp‘);my $addr=sockaddr_in(80, inet_aton($ip));connect $S, $addr or die

Слайд 10Sniffer под Unix
без использования libpcap
#!/usr/bin/perl

#use Socket;
use constant PF_PACKET =>

17;
use constant SOCK_PACKET => 10;
use constant ETH_P_ALL => 0x0003;

socket (SOCKET,

PF_PACKET, SOCK_PACKET, ETH_P_ALL) or die “Socket error: $!\n";
while (){
recv (SOCKET, $buf, 1514, 0); # читаем пакет
print unpack ("H*", $buf), "\n\n"; # выводим его в формате hex
}

YAPC::Russia 2009

Sniffer под Unix без использования libpcap#!/usr/bin/perl#use Socket;use constant PF_PACKET => 17;use constant SOCK_PACKET => 10;use constant ETH_P_ALL

Слайд 11Отправка UDP пакета
через raw socket
#!/usr/local/bin/perl

use Socket;
use constant IPPROTO_RAW =>

255;

$iaddr = inet_aton ('192.168.139.1');
$paddr = sockaddr_in (80, $iaddr); #80 -

порт назначения

socket(SOCKET, PF_INET, SOCK_RAW, IPPROTO_RAW) or die “Socket error: $!\n";


YAPC::Russia 2009

Отправка UDP пакета через raw socket#!/usr/local/bin/perluse Socket;use constant IPPROTO_RAW => 255;$iaddr = inet_aton ('192.168.139.1');$paddr = sockaddr_in (80,

Слайд 12Отправка UDP пакета
через raw socket
$packet .= pack("C", 69);
$packet .=

pack ("H2", '00');
$packet .= pack ("n", 28);
$packet .= pack ("n",

0);
$packet .= pack ("H4", '4000');
$packet .= pack ("C", 64);
$packet .= pack ("C", getprotobyname('udp'));
$packet .= pack ("n", 0);
$source_ip = '207.46.197.32';
$result_source_ip .= pack ("C", $_) for (split('\.', $source_ip));
$packet .= $result_source_ip;
$destination_ip = '192.168.139.1';
$result_destination_ip .= pack ("C", $_) for (split('\.', $destination_ip));
$packet .= $result_destination_ip;
$packet .= pack ("n", 25);
$packet .= pack ("n", 80);
$packet .= pack ("n", 8);
$packet .= pack ("H4", '0000');

YAPC::Russia 2009

Отправка UDP пакета через raw socket$packet .= pack(

Слайд 13Отправка пакетов
через packet socket
С какого интерфейса происходит отправка пакета:

struct

sockaddr {
sa_family_t sa_family; //семейство протоколов
char

sa_data[14]; //14 байтов на описание этого семейства...
};

YAPC::Russia 2009

Отправка пакетов через packet socketС какого интерфейса происходит отправка пакета:struct sockaddr {	sa_family_t   sa_family;

Слайд 14Отправка пакетов
через packet socket
Пример заполнения структуры и отправки пакета:

$addr

= PF_PACKET; #семейство
$iface = "eth0"; #используемое устройство
$socket = pack ('Sa14',

$addr, $iface); #упаковываем все это в структуру
send(SOCKET, $packet, 0, $socket) or die "Can't send packet:$!\n";

YAPC::Russia 2009

Отправка пакетов через packet socketПример заполнения структуры и отправки пакета:$addr = PF_PACKET; #семейство$iface =

Слайд 15Неблокирующий сокет
на Perl (Windows)


my ($win, $ein);
my $addr=sockaddr_in(86, inet_aton("10.0.0.253"));
socket SOCK,

PF_INET, SOCK_STREAM, 0 or die "Socket: $!\n";

ioctl(SOCK, 0x8004667e, pack("I", 1));
connect

SOCK, $addr;

vec ($win = '',fileno(SOCK),1)=1;
$ein=$win;
my $nfound = select (undef, $win, $ein, 1);


YAPC::Russia 2009

Неблокирующий сокет на Perl (Windows)…my ($win, $ein);my $addr=sockaddr_in(86, inet_aton(

Слайд 16Perl в хэке и хэки в Perl
СПАСИБО ЗА ВНИМАНИЕ!
Илья Зеленчук

(ilya@hackerdom.ru)
YAPC::Russia 2009

Perl в хэке и хэки в PerlСПАСИБО ЗА ВНИМАНИЕ!Илья Зеленчук (ilya@hackerdom.ru)YAPC::Russia 2009

Слайд 17 Запустить netcat, повесить bash, cat’нуть файл, grep’нуть по регвыру...



Или лучше установить Perl?


K.I.S.S.
YAPC::Russia 2009

Запустить netcat, повесить bash, cat’нуть файл, grep’нуть по регвыру... Или лучше установить Perl?K.I.S.S.YAPC::Russia 2009

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика