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

Презентация:



Advertisements
Похожие презентации
Сокеты в Perl и PHP. Сокеты в Perl Сокеты являются «конечными пунктами» в процессе обмена данными. Одни типы сокетов обеспечивают надежный обмен данными,
Advertisements

СОКЕТЫ. СОКЕТ Сокет – программный интерфейс для обеспечения обмена данными между процессами. Впервые socket API появилась в BSD Unix. Описан в POSIX В.
Сокеты Сети и системы телекоммуникаций Созыкин А.В.
Взаимодействие процессов: сокеты.
3. Механизм сокетов 3.1. Общие концепции 3.2. Интерфейсные функции для работы с сокетом Создание сокета Связывание и установление соединения.
Корпоративные системы Лекция 3. Реализация архитектуры «Клиент- сервер» с использованием механизма сокетов.
СОКЕТЫ -2 РАБОТА СЕРВЕРА Стандартная схема работы плоха тем, что одновременно обслуживается только один клиент ! Это приводит к задержкам в работе сети.
Александр Шиков ООО IT ConsultingАлександр Шиков ООО IT Consulting.
Механизм сокетов Средства межпроцессного взаимодействия ОС Unix, представленные в системе IPС, решают проблему взаимодействия процессов, выполняющихся.
Сетевой анализатор трафика на языке программирования Perl в ОС Windows Курсовая работа студентки 345 группы Филипповой Анастасии Валерьевны Научный руководитель.
Стек протоколов TCP/IP сетевые адаптеры, модемы, кабельная система; формирование пакетов, целостность данных целостность пакетов, потоковая передача Межузловой.
В. М. Гуровиц, ДиапазонЗначение range(6)0, 1, 2, 3, 4, 5 range(3, 8)3, 4, 5, 6, 7 range(3, 8, 2)3, 5, 7 range(8, 3, -2)8, 6, 4 range(8,
Cisco Internetwork Troubleshooting Creating End-System Network Configuration Documentation © 2005 Cisco Systems, Inc. All rights reserved. CIT v
TECHNOLOGIES Программирование Socket'ов Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной.
© 2000, Cisco Systems, Inc. CSPFF Chapter 10 Cisco Secure PIX Firewall Advanced Features.
1 Учебный курс Введение в JavaScript и CGI Лекция 5 Основы CGI кандидат технических наук Павел Брониславович Храмцов
1 Учебный курс Основы Web-технологий Лекция 6 CGI и Perl. SSI и Cookies кандидат технических наук Павел Брониславович Храмцов
СЕТЕВОЕ ПРОГРАММИРОВАНИЕ В LINUX. Со́кеты Со́кеты (англ. socket углубление, гнездо, разъём) название программного интерфейса для обеспечения обмена данными.
© 2006 Cisco Systems, Inc. All rights reserved.IP6FD v Security Issues in IPv6 Configuring IPv6 ACLs.
Петрозаводский госуниверситет, А. В. Соловьев, 2007СЕТЕВЫЕ ТЕХНОЛОГИИ Технология клиент-сервер Архитектура распределённой вычислительной системы, в которой.
Транксрипт:

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

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

Perl в хэке Простоя работа с сетью; Удобен при написании PoC; Обфускация кода; Генерация сложночитаемого С кода; Затрудненный reverse. YAPC::Russia 2009

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

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

Perl2C... (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*)&sv_list[280]; AvFILLp(av) = 2; } PL_curpad = AvARRAY((AV*)&sv_list[279]); GvHV(PL_incgv) = (HV*)&sv_list[53];... (150 строк) YAPC::Russia 2009

Perl2bin YAPC::Russia 2009

Хэки в Perl Простой сокет в Perle; Sniffer под UNIX без использования libpcap; Прием/отправка пакетов и использованием raw socket; Неблокирующие сокеты. YAPC::Russia 2009

Perl 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 ; close $S; 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 => 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

Отправка UDP пакета через raw socket #!/usr/local/bin/perl use Socket; use constant IPPROTO_RAW => 255; $iaddr = inet_aton (' '); $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 $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 = ' '; $result_source_ip.= pack ("C", $_) for (split('\.', $source_ip)); $packet.= $result_source_ip; $destination_ip = ' '; $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

Отправка пакетов через packet socket С какого интерфейса происходит отправка пакета: struct sockaddr { sa_family_t sa_family; //семейство протоколов char sa_data[14]; //14 байтов на описание этого семейства... }; YAPC::Russia 2009

Отправка пакетов через 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

Неблокирующий сокет на Perl (Windows) … my ($win, $ein); my $addr=sockaddr_in(86, inet_aton(" ")); socket SOCK, PF_INET, SOCK_STREAM, 0 or die "Socket: $!\n"; ioctl(SOCK, 0x e, 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 в хэке и хэки в Perl СПАСИБО ЗА ВНИМАНИЕ! Илья Зеленчук YAPC::Russia 2009

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