示例#1
0
def check_UDP_probe(pkt, nfq_packet, os_pattern):
    """
    Identify the UDP based probe
    and reply with a faked reply if needed
    """
    if pkt[IP].id == 0x1042 and pkt[UDP].payload.load[0] == "C" and pkt[
            UDP].payload.load[1] == "C" and pkt[UDP].payload.load[2] == "C":
        drop_packet(nfq_packet)
        if os_pattern.PROBES_2_SEND["U1"]:
            # create reply packet (ICMP port unreachable)
            # ICMP type = 3  =^ destination unreable
            ICMP_type = 3
            send_ICMP_reply(pkt, ICMP_type, os_pattern,
                            os_pattern.TCP_OPTIONS['U1'])
            # print "U1 Probe"

    else:
        forward_packet(nfq_packet)
示例#2
0
def check_ICMP_probes(pkt, nfq_packet, os_pattern):
    """
    Identify the ICMP based probes
    and reply with a faked packet if needed
    """
    if pkt[ICMP].type is 8:
        # Probe 1 + 2
        if (pkt[ICMP].seq == 295 and pkt[IP].flags == 0x02 and len(pkt[ICMP].payload) == 120) or (pkt[ICMP].seq == 296 and pkt[IP].tos == 0x04 and len(pkt[ICMP].payload) == 150):
            drop_packet(nfq_packet)
            if os_pattern.PROBES_2_SEND["IE"]:
                # ICMP type = 0  =^ echo reply
                ICMP_type = 0
                send_ICMP_reply(pkt, ICMP_type, os_pattern, os_pattern.TCP_OPTIONS['IE'])
                # print "IE Probe"
        else:
            forward_packet(nfq_packet)
    else:
        forward_packet(nfq_packet)
示例#3
0
def check_TCP_probes(pkt, nfq_packet, os_pattern, session, debug):
    # Check TCP Probes

    # Check if the packet is a probe and if a reply should be sent

    # SEQ, OPS, WIN, and T1 - Sequence generation
    # 6 Probes sent
    if check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P1'], NMAP_PROBE_TCP_ATTR['P1']):
        if os_pattern.PROBES_2_SEND['P1']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P1'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #1"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P2'], NMAP_PROBE_TCP_ATTR['P2']):
        if os_pattern.PROBES_2_SEND['P2']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P2'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #2"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P3'], NMAP_PROBE_TCP_ATTR['P3']):
        if os_pattern.PROBES_2_SEND['P3']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P3'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #3"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P4'], NMAP_PROBE_TCP_ATTR['P4']):
        if os_pattern.PROBES_2_SEND['P4']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P4'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #4"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P5'], NMAP_PROBE_TCP_ATTR['P5']):
        if os_pattern.PROBES_2_SEND['P5']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P5'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #5"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['P6'], NMAP_PROBE_TCP_ATTR['P6']):
        if os_pattern.PROBES_2_SEND['P6']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['P6'], os_pattern.TCP_FLAGS['SEQ'], os_pattern.IP_ID_TI_CNT)
            # print "TCP Probe #6"

    # ECN
    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['ECN'], NMAP_PROBE_TCP_ATTR['ECN'],):
        if os_pattern.PROBES_2_SEND['ECN']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['ECN'], os_pattern.TCP_FLAGS['ECN'], os_pattern.IP_ID_TI_CNT, ECN_URGT_PTR)
            # print "TCP Probe #ECN"

    # T2-T7
    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T2-T6'], NMAP_PROBE_TCP_ATTR['T2'], NMAP_PROBE_IP_ATTR['T2']):
        if os_pattern.PROBES_2_SEND['T2']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T2'], os_pattern.TCP_FLAGS['T2'], 0, os_pattern.TCP_SEQ_NR['T2'], os_pattern.TCP_ACK_NR['T2'])
            # print "TCP Probe #T2"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T2-T6'], NMAP_PROBE_TCP_ATTR['T3']):
        if os_pattern.PROBES_2_SEND['T3']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T3'], os_pattern.TCP_FLAGS['T3'], 0, os_pattern.TCP_SEQ_NR['T3'], os_pattern.TCP_ACK_NR['T3'])
            # print "TCP Probe #T3"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T2-T6'], NMAP_PROBE_TCP_ATTR['T4'], NMAP_PROBE_IP_ATTR['T4']):
        if os_pattern.PROBES_2_SEND['T4']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T4'], os_pattern.TCP_FLAGS['T4'], 0, os_pattern.TCP_SEQ_NR['T4'], os_pattern.TCP_ACK_NR['T4'])
            # print "TCP Probe #T4"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T2-T6'], NMAP_PROBE_TCP_ATTR['T5']):
        if os_pattern.PROBES_2_SEND['T5']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T5'], os_pattern.TCP_FLAGS['T5'], os_pattern.IP_ID_CI_CNT, os_pattern.TCP_SEQ_NR['T5'], os_pattern.TCP_ACK_NR['T5'])
            # print "TCP Probe #T5"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T2-T6'], NMAP_PROBE_TCP_ATTR['T6'], NMAP_PROBE_IP_ATTR['T6']):
        if os_pattern.PROBES_2_SEND['T6']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T6'], os_pattern.TCP_FLAGS['T6'], os_pattern.IP_ID_CI_CNT, os_pattern.TCP_SEQ_NR['T6'], os_pattern.TCP_ACK_NR['T6'])
            # print "TCP Probe #T6"

    elif check_TCP_Nmap_match(pkt, nfq_packet, NMAP_PROBE_TCP_OPTION['T7'], NMAP_PROBE_TCP_ATTR['T7']):
        if os_pattern.PROBES_2_SEND['T7']:
            check_in_session(session, pkt.src, debug)
            send_TCP_reply(pkt, os_pattern, os_pattern.TCP_OPTIONS['T7'], os_pattern.TCP_FLAGS['T7'], os_pattern.IP_ID_CI_CNT, os_pattern.TCP_SEQ_NR['T7'], os_pattern.TCP_ACK_NR['T7'])
            # print "TCP Probe #T7"

    else:
        forward_packet(nfq_packet)