Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Фальсификация ip udp в 2019? (https://forum.antichat.xyz/showthread.php?t=474137)

Seoul 16.11.2019 23:53

Вопрос простой. Можно ли до сих пор ставить ложный айпи в заголовках удп пакетов? Пропустит ли их провайдер?

Мой провайдер - билайн

Если кто-нибудь позволит с включенным wireshark попробовать это провернуть, то будет вообще замечательно

tester_new 24.11.2019 16:41

Первое что пришло в голову, поставить scapy и зарегать(если нет своего или не хочешь палить) бесплатный vds и запусти там netcat и долби свой vds любыми пакетами.

send(IP(src="FAKE_IP", dst="127.0.0.1")/UDP(dport=123)/Raw(load="abc")) #Не тестил

lifescore 25.11.2019 09:43

Цитата:

Сообщение от None
Протокол L2TP является версией протокола инкапсуляции IP. При передаче данных по туннелю L2TP кадр L2TP помещается в пакет UDP, который, в свою очередь, помещается в пакет IP. В качестве адресов отправителя и получателя этого пакета указываются конечные точки соединения. Для защиты составного пакета IP могут применяться протоколы IPSec. С их помощью можно обеспечить защиту данных, передаваемых по туннелю L2TP. При работе с таким соединением можно напрямую применять протоколы AH, ESP и IKE.

источ: https://www.ibm.com/support/knowledg...tpprotocol.htm

Цитата:

Сообщение от None
Инкапсуляция пакетов L2TP/IPSec выполняется в два этапа.
  1. Инкапсуляция L2TP - кадр PPP (IP-датаграмма или IPX-датаграмма) заключается в оболочку с заголовком L2TP и заголовком UDP.
  2. Инкапсуляция IPSec - затем полученное L2TP-сообщение заключается в оболочку с заголовком и трейлером IPSec ESP (Encapsulating Security Payload), трейлером проверки подлинности IPSec, обеспечивающим целостность сообщения и проверку подлинности, и заголовком IP. В заголовке источник и приемник соответствуют VPN-клиенту и VPN-серверу.

если речь про l2tp билайна

проверки так каковой может и не быть, негде тестить(

vikaig 25.11.2019 13:39

Цитата:

Сообщение от Seoul
Seoul said:

Вопрос простой. Можно ли до сих пор ставить ложный айпи в заголовках удп пакетов? Пропустит ли их провайдер?
Мой провайдер - билайн
Если кто-нибудь позволит с включенным wireshark попробовать это провернуть, то будет вообще замечательно

Лучше называть это не фальсификацией, а IP-спуфингом или подменой IP-адреса, не когда не слышал чтоб это называли фальсификацией.

На счет провайдера твоего не знаю, если нет NAT, то вполне вероятно, а с NAT - нет(точнее да, он скорее пропустит, но со своим IP, без спуфа).

Сделал простую отправку UDP датаграммы чтоб прочекать у себя, можешь тоже проверить:

Код:

Code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define PACKET_SIZE 8192
#define SOURCE_ADDR "1.2.3.4"
#define SOURCE_PORT 12345
#define DST_ADDR "1.1.1.1"
#define DST_PORT 12345

unsigned short csum(unsigned short *buf, int nwords) {
    unsigned long sum;
    for(sum=0; nwords>0; nwords--) {
        sum += *buf++;
    }
    sum = (sum >> 16) + (sum &0xffff);
    sum += (sum >> 16);

    return (unsigned short)(~sum);
}

int main(int argc, char *argv[]) {
    int sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
    assert(sock != -1);

    const int optval = 1;
    int ret = setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &optval, sizeof(optval));
    assert(ret != -1);

    char packet[PACKET_SIZE] = { 0 };
    struct iphdr *ip = (struct iphdr *)packet;
    struct udphdr *udp = (struct udphdr *)(packet + sizeof(*ip));

    ip->ihl = 5;
    ip->version = 4;
    ip->tos = 16;
    ip->tot_len  = sizeof(*ip) + sizeof(*udp);
    ip->id = htons(12345);
    ip->ttl = 64;
    ip->protocol = 17;
    ip->saddr = inet_addr(SOURCE_ADDR);
    ip->daddr = inet_addr(DST_ADDR);

    udp->source = htons(SOURCE_PORT);
    udp->dest = htons(DST_PORT);
    udp->len = htons(sizeof(*udp));

    ip->check = csum((unsigned short *)packet, sizeof(*ip) + sizeof(*udp));

    struct sockaddr_in sin;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(DST_PORT);
    sin.sin_addr.s_addr = inet_addr(DST_ADDR);

    ret = sendto(sock, packet, ip->tot_len, 0, (struct sockaddr *)&sin, sizeof(sin));
    assert(ret != -1);

    close(sock);

    printf("Datagram sent to %s:%d, from %s:%d", DST_ADDR, DST_PORT, SOURCE_ADDR, SOURCE_PORT);

    return EXIT_SUCCESS;
}



Время: 07:05