#include "vulncheck.h" #include "templ-pkt.h" #include "unusedparm.h" /***************************************************************************** *****************************************************************************/ static void set_target(struct TemplatePacket *tmpl, unsigned ip_them, unsigned port_them, unsigned ip_me, unsigned port_me, unsigned seqno, unsigned char *px, size_t sizeof_px, size_t *r_length) { unsigned offset_tcp = tmpl->ipv4.offset_tcp; unsigned offset_ip = tmpl->ipv4.offset_ip; unsigned offset_app = tmpl->ipv4.offset_app; unsigned tmpl_length= tmpl->ipv4.length; unsigned xsum; UNUSEDPARM(r_length); UNUSEDPARM(sizeof_px); UNUSEDPARM(seqno); UNUSEDPARM(ip_me); UNUSEDPARM(ip_them); px[offset_tcp+ 0] = (unsigned char)(port_me >> 8); px[offset_tcp+ 1] = (unsigned char)(port_me & 0xFF); px[offset_tcp+ 2] = (unsigned char)(port_them >> 8); px[offset_tcp+ 3] = (unsigned char)(port_them & 0xFF); px[offset_tcp+ 4] = (unsigned char)((tmpl_length - offset_app + 8)>>8); px[offset_tcp+ 5] = (unsigned char)((tmpl_length - offset_app + 8)&0xFF); px[offset_tcp+6] = (unsigned char)(0); px[offset_tcp+7] = (unsigned char)(0); xsum = udp_checksum2(px, offset_ip, offset_tcp, tmpl_length - offset_tcp); xsum = ~xsum; px[offset_tcp+6] = (unsigned char)(xsum >> 8); px[offset_tcp+7] = (unsigned char)(xsum >> 0); } /***************************************************************************** *****************************************************************************/ static unsigned char packet_template[] = "\0\1\2\3\4\5" /* Ethernet: destination */ "\6\7\x8\x9\xa\xb" /* Ethernet: source */ "\x08\x00" /* Ethernet type: IPv4 */ "\x45" /* IP type */ "\x00" "\x00\x4c" /* total length = 28 bytes */ "\x00\x00" /* identification */ "\x00\x00" /* fragmentation flags */ "\xFF\x11" /* TTL=255, proto=UDP */ "\xFF\xFF" /* checksum */ "\0\0\0\0" /* source address */ "\0\0\0\0" /* destination address */ "\xfe\xdc" /* source port */ "\x00\x00" /* destination port */ "\x00\x38" /* length */ "\x00\x00" /* checksum */ "\x17\x00\x03\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ; /***************************************************************************** *****************************************************************************/ struct MassVulnCheck vuln_ntp_monlist = { "ntp-monlist", /* name of this vuln, matches command-line name */ "U:123", /* default ports this vuln check should target */ packet_template, sizeof(packet_template)-1, set_target };