ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Сниффер для начинающих
  #1  
Старый 30.03.2008, 15:38
Аватар для cash$$$
cash$$$
Banned
Регистрация: 06.01.2008
Сообщений: 413
Провел на форуме:
1301036

Репутация: 1334
Отправить сообщение для cash$$$ с помощью ICQ
По умолчанию Сниффер для начинающих

Эта статья рассчитана, для новичков. И так начнем.

Что такое сниффер

Снифферы - это программы, которые перехватывают весь сетевой трафик.
Они могут перехватывать и расшифровывать имена и пароли пользователей, конфиденциальную информацию, нарушать работу отдельных компьютеров и сети в целом. Известно, что в большинстве протоколов передачи данных ( FTP , POP, HTTP, telnet ) секретная информация между клиентом и сервером передаётся открытым текстом. Поэтому, не составляет большого труда получить доступ к такой информации.

Методы применения sniff'инга

Sniff'инг - один из наиболее популярных видов атаки. Sniff'инг - один из наиболее популярных видов атаки, используемых хакерами. Наибольшую известность приобрел сниффер Esniff.c - очень маленький, разработанный для работы на SunOS, занимался тем, что вылавливал первые 300 байтов telnet, ftp и rlogin сессий.
Существует множество ethernet sniff'еров, здесь лишь некоторые из них:
sniffers для систем Unix
SunOS: Esniff.c | Etherfind | Snoop (ftp://playground.sun.com/)
DEC Unix: tcpdump
OSF Unix: faq on BPF suppport
DEC Ultrix: tcpdump | faq on BPF suppport
Solaris: tcpdump | Snoop ( ftp://playground.sun.com/) | solsniffer.c
FreeBSD: ftp://gatekeeper.dec.com/pub/BSD/FreeBSD/FreeBSD-current/src/contrib/tcpdump/
NetBSD: ftp://gatekeeper.dec.com/pub/BSD/NetBSD/NetBSD-current/src/usr.sbin/
Linux: ftp://sunsite.unc.edu/pub/Linux/system/Network/management/ | Linsniffer 0.03.9
SGI Irix: nfswatch | Etherman | tcpdump
HP/UX: nettl (monitor) | netfmt (display) | nfswatch

Основы передачи данных в сети

Каждому устройству в сети Ethernet, соответствует уникальный шестибайтовый MAC -адрес ( Media Access Control). Единицей передачи данных, в такой сети является кадр ( frame ), который имеет определённую структуру и несёт в себе информацию о получателе, отправителе и самих данных.

Цитата:
struct ETHERNET_FRAME
{
unsigned char dest[6];// MAC- адрес получателя
unsigned char src[6]; // MAC- адрес отправителя
unsigned short type; // версия : IPv4 0x0800, IPv6 0x86DD, ARP 0x0806
unsigned char data[]; // данные
};
Кадр может иметь размер, примерно от 60 до 1514 байт, из них первые 14 байт являются служебными. Когда требуется передать большое количество данных, они разбиваются на фрагменты и последовательно направляются в сеть. Кадр передаётся по сети и получает его каждое устройство этой сети. Значение поля структуры с именем type определяет тип и версию в кадре. Завершающая секция кадра служит для проверки целостности передаваемых данных и использует код циклического контроля ( CRC 32 - cyclic redundancy check ). Это мощная хэш-функция, для выявления искажённости числовых данных. Обычно она аппаратно реализована в сетевой плате.
В качестве данных может быть IP -пакет или ARP -пакет. ARP ( address resolution protocol ) - это служебный вспомогательный протокол, который осуществляет, трансляцию MAC -адресов в логические IP -адреса на основе широковещательной рассылки запросов.

Цитата:
struct ETHERNET_ARP
{
unsigned short hrd; // Тип аппаратуры (Ethernet), 0x0001.
unsigned short pro; // Протокол (IP), 0x0800.
unsigned char hln; // Длина аппаратного адреса ( MAC ), 6 байт.
unsigned char pln ; // Длина адреса протокола IP, 4 байта.
unsigned short op ; // Вид операции {Запрос, Ответ} = {1, 2}.
unsigned char sha [6];// Аппаратный адрес ( MAC ) отправителя.
unsigned char spa[4] ;// IP -адрес отправителя.
unsigned char tha [6];// Аппаратный адрес ( MAC ) получателя.
unsigned char tpa [4];// IP -адрес получателя.
};
Для доставки пакетов в сети, нужно определить адрес узла назначения. Для этого существует ARP - протокол автоматического определения адресов ( IP <=> MAC ). Когда компьютеру нужно начать обмен данными, он ищет MAC -адрес получателя, затем IP -адрес в ARP-таблице. Если для нужного IP-адреса не найден соответствующий MAC -адрес, то посылается широковещательный запрос ARP, содержащий искомый IP-адрес назначения, а MAC-адрес для широковещательной рассылки заполнен единицами FF:FF:FF:FF:FF:FF. Целевой хост узнает свой IP-адрес, обрабатывает запрос и посылает ответ. Система готова к пересылке данных по локальной сети.

IP –пакеты

Пакет состоит из заголовка, служебной информации ( options ) и данных. На языке Си этот заголовок выглядит, в виде такой структуры:

Цитата:
typedef struct _IPHeader
{
unsigned char verlen ; // версия и длина заголовка
unsigned char tos; // тип сервиса
unsigned short length; // длина всего пакета
unsigned short id; // Id
unsigned short offset; // флаги и смещения
unsigned char ttl; // время жизни
unsigned char protocol; // протокол
unsigned short xsum ; // контрольная сумма
unsigned long src ; // IP -адрес отправителя
unsigned long dest ; // IP -адрес назначения
}IPHeader;
Для нас особый интерес представляют поля заголовка protocol, src и dest . Два последних поля - это хорошо известные IP -адреса отправителя и получателя пакета. Например, шестнадцатеричное значение адреса 0 x 0000140 A соответствует 10.20.0.0.
Поскольку в сети большое количество пакетов, то их лучше отфильтровывать. Критериями фильтрации могут быть IP -адреса, тип вышестоящего протокола ( TCP , UDP , ICMP , PUP ), а также содержимое пакета. Функции фильтрации полезны, так как не только ограничивают собираемую программой информацию, но и просто обеспечивают её нормальную работу.

Структура программы для прослушивания сети

Обладая знаниями, можно приступить к написанию программы, для Windows 2000. Каркас программы может состоять из частей:
1. Драйвер для приёма всех пакетов ( уже установлен в ОС ).
2. Буфер для накопления и обработки пакетов. Это может быть простейший массив из байтов.
3. Анализатор пакетов - набор функций, для управления фильтрацией.
4. Декодер-шифратор (например, декодировать данные из BASE64).
5. Автоматизированный редактор пакетов, который по команде, вносит некоторые изменения в пакет и отправляет его обратно в сеть.
В начале программы, использующей Windows Sockets, находится код инициализации сетевой библиотеки ( WSAStartup ). Затем следует создание сокета, определение имени и IP-адреса компьютера ( gethostbyname ), с которого запущена программа. В заключение устанавливаются параметры сокета ( bind ). Теперь осталось переключить сокет в режим приёма всех пакетов. Управляющая функция ioctlsocket с параметром-командой SIO_RCVALL включает promiscuous mode.

PHP код:
#include <conio.h> 
# include < winsock 2. h > 
# define MAX _ PACKET _ SIZE     0 x 10000 
// Буфер для приёма данных 
static BYTE Buffer[MAX_PACKET_SIZE]; // 64 Kb 
void main() 

  
WSADATA     wsadata;   // Инициализация WinSock. 
  
SOCKET      s;         // Слущающий сокет. 
  
char         name[128]; // Имя хоста (компьютера). 
  
HOSTENT*    phe;       // Информация о хосте. 
  
SOCKADDR_IN sa;        // Адрес хоста 
  
long         flag 1;  // Флаг PROMISC Вкл / выкл. 
  // инициализация 
  
WSAStartup(MAKEWORD(2,2), &wsadata); 
  
socketAF_INETSOCK_RAWIPPROTO_IP ); 
  
gethostname(namesizeof (name)); 
  
phe gethostbynamename ); 
  
ZeroMemory( &sasizeof (sa) ); 
  
sa.sin_family AF_INET
  
sa.sin_addr.s_addr = (( struct in_addr *)phe->h_addr_list[0])->s_addr
  
bind(s, (SOCKADDR *)&sasizeof (SOCKADDR)); 
  
  
// Включение promiscuous mode. 
  
ioctlsocket(sSIO_RCVALL, &flag); 
  
// Приём IP -пакетов. 
  
while ( !_kbhit() ) 
  { 
    
int count
    
count recvsBuffersizeof (Buffer), ); 
    
// обработка IP- пакета 
    
if ( count >= sizeof (IPHeader) ) 
    { 
      
IPHeaderhdr = (IPHeader *)Buffer
      
//что-то делаем с пакетом... 
    

  } 
  
// Конец работы . 
  
closesocket); 
  
WSACleanup(); 

Для успешной компиляции, следует библиотечный файл " ws 2_32. lib ". Вот и все, что хотелось рассказать в этой статье.

Ps: Спасибо всем, кто уделил свое внимание… Удачи

(с) cash$$$ !-> http://www1.hut.ru/aneksniff/sniffer2.html (прим. -=lebed=-)

Последний раз редактировалось -=lebed=-; 30.03.2008 в 17:24..
 
Ответить с цитированием

  #2  
Старый 30.03.2008, 17:17
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

В основной массе копипаст от сюда: http://www1.hut.ru/aneksniff/sniffer2.html
Часть от сюда http://sp.sz.ru/sniffers_.html
Ввиду практически отсутствующих своих слов автора в статье + чисто теоретическая направленность статьи непозволяет даже к сборнику копипаста её отнести, скорее всё же перенос -> чужие статьи (причина плагиат, копипаст, ссылки на используемый материал не приведены).
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
Комплект инструментов для вебмастеров. Solide Snake SЕО - тонкости, методы раскрутки 1 20.03.2008 00:10
Инструмент сисадмина. Загрузочный CD - Frenzy.(All in One) xxChaoSxx *nix 3 04.03.2008 22:00
Обзор новшеств в FreeBSD 7.0 zythar Мировые новости 2 28.02.2008 12:43



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ