Stealth Scanner¸¦ ¸¸µé¾î º¸ÀÚ~! (2)

 

* ¾Õ¼­ ¸¸µç ÇÁ·Î±×·¥ÀÇ ¹®Á¦Á¡.

 

Áö³­ °­Á¿¡¼­ ¿ì¸®´Â SYN Ç÷¡±×¸¦ ´ãÀº ÆÐŶÀ» º¸³»´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸¾Ò½À´Ï´Ù.

±×¸®°í ÆÐŶ ½º´ÏÇÎÀÇ °á°ú¸¦ º¸¾ÒÀ» ¶§, ¾ð¶æ º¸±â¿¡´Â ¾Æ¹«·± ¹®Á¦°¡ ¾ø¾î º¸ÀÌÁö¸¸

°á°ú¿¡´Â ÇѰ¡Áö ¹®Á¦Á¡ÀÌ Á¸ÀçÇÕ´Ï´Ù. ÀÏ´Ü ÆÐŶ ½º´ÏÇÎ °á°ú¸¦ À¯½ÉÈ÷ »ìÆìº¾½Ã´Ù.

 

 

À§¿¡¼­ 19¹ø¿¡ ÇØ´çÇÏ´Â ÆÐŶÀÌ ¹Ù·Î ¿ì¸®°¡ Á÷Á¢ Çì´õ¸¦ ¸¸µé¾î¼­ º¸³Â´ø °ÍÀÔ´Ï´Ù.

±×¸®°í ¸¸¾à ÀÌ ÆÐŶÀÌ Á¤»óÀûÀÎ °ÍÀ̶ó¸é, 20¹ø¿¡ ´ÙÀ½°ú °°Àº ÆÐŶÀÌ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù.

 

19 XXXXX  111.111.111.111   218.149.4.60       TCP    777 > 12345 [SYN] XXXXX

20 XXXXX  218.149.4.60      111.111.111.111    TCP    12345 > 777 [SYN,ACK] XXXXX

 

Áï, ¸¸¾à Á¤»óÀûÀÎ »óȲÀ̶ó¸é ÇÑ È£½ºÆ®°¡ SYN ÆÐŶÀ» ´ãÀº ÆÐŶÀ» ¹Þ¾ÒÀ» ¶§, ±× ÆÐŶÀ»

Àß ¹Þ¾Ò´Ù´Â ÀǹÌÀÇ SYN, ACK ÆÐŶÀ» ¹ß½ÅÀÚ ÂÊÀ¸·Î µÇµ¹·ÁÁÖ¾î¾ß µÈ´Ù´Â °ÍÀÔ´Ï´Ù.

ÇÏÁö¸¸ À§ ĸÃÄ È­¸é¿¡¼± ±× °úÁ¤¿¡ ³ªÅ¸³ª ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌÇØÇϱ⠽±°Ô ¾ê±âÇÏÀÚ¸é

¿ì¸®°¡ º¸³½ ÆÐŶÀÌ ¹«½ÃµÇ¾î ¹ö¸° °ÍÀÌÁÒ. ±×·³ µµ´ëü ¿Ö ÀÌ·± Çö»óÀÌ ³ªÅ¸³­ °É±î¿ä?

 

Á¤´äÀº ¹Ù·Î CHECKsum¿¡ ÀÖ½À´Ï´Ù. Áö³­ ¹ø °­Á¿¡¼­ tcphdr->check º¯¼ö¸¦ ±â¾ïÇ϶ó°í

Çß¾úÁÒ? ÀÌ º¯¼ö´Â ¼ÒÀ§ ¡°¿¡·¯ ¹ß°ß ºñÆ®¡±¶ó°í ºÒ¸®´Â °ÍÀ¸·Î½á, ÇØ´ç ÆÐŶÀÌ ³×Æ®¿öÅ©¸¦

Ÿ°í »ó´ë¹æ È£½ºÆ®·Î Àü´ÞµÇ´Â µ¿¾È ¾Æ¹«·± ÀÌ»óÀÌ ¾ø¾ú´ÂÁö¸¦ ÆÇ´ÜÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.

 

ÇÑ ÆÐŶÀ» Àü¼Û ¹ÞÀº È£½ºÆ®´Â ÀÌ Ã¼Å©¼¶ÀÇ °ªÀ» È®ÀÎÇÑ ÈÄ, ¸¸¾à ÀÌ»óÀÌ ÀÖ´Ù¸é ±× ÆÐŶÀ»

¹«½ÃÇϰí, À§¿¡¼­ º» °Í°ú °°ÀÌ ±× ÆÐŶ¿¡ ´ëÇÑ ÀÀ´ä Á¶Â÷ ÇÏÁö ¾Ê½À´Ï´Ù.

 

üũ¼¶ÀÇ °ªÀº ÀÏ·ÃÀÇ ¿¬»ê °úÁ¤À» °ÅÃÄ ¿Ï¼ºµÇ´Âµ¥, ¿ì¸®´Â Áö³­ ¹ø ¿¹¿¡¼­ ÀÓÀÇÀÇ °ªÀÎ

1À» Áý¾î ³Ö¾î¹ö·ÈÀ¸´Ï ´ç¿¬È÷ ¿¡·¯³ª ³­ °ÍÀÌÁö¿ä. ½ÇÁ¦ ÆÐŶ ½º´ÏÇÎÀÇ °á°ú¿¡¼­µµ üũ¼¶¿¡

¹®Á¦°¡ ÀÖ´Ù°í ¸»ÇØ ÁÝ´Ï´Ù.

 

 

incorrect, Áï ¿Ã¹Ù¸£Áö ¾ÊÀ¸¸ç, 0x2ad5 °ªÀ̾î¾ß Á¤»óÀ̶ó°í ÇÕ´Ï´Ù.

 

ÀÚ, ±×·³ ÀÌÁ¦ ¿Ã¹Ù¸¥ üũ¼¶À» °è»êÇØÁÖ´Â ÇÔ¼ö¸¦ ¿ì¸®ÀÇ Äڵ忡 Ãß°¡ÇØ º¸µµ·Ï ÇսôÙ.

´ÙÀ½Àº ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â üũ¼¶ °è»ê ÇÔ¼öÀÔ´Ï´Ù.

 

 

unsigned short in_cksum(u_short *addr, int len)
{
    int         sum=0;        // ÃÑ ÇÕ°è.
    int         nleft=len;    // ÀÎÀÚ·Î ¹ÞÀº len.
    u_short     *w=addr;      // ÀÎÀÚ·Î ¹ÞÀº addrÀÇ ÁÖ¼Ò¸¦ ÀúÀå.
    u_short     answer=0;     // ÃÖÁ¾ÀûÀ¸·Î ¸®ÅϵǴ °ª.
 
    // nleft¸¸Å­ sum¿¡ *wÀÇ °ªÀ» ´õÇÔ. 
    while (nleft > 1){
        sum += *w++;
        nleft -= 2;
    }
  
    // nleft°¡ Ȧ¼ö¶ó¼­ °ªÀÌ ³²À» °æ¿ì Ãß°¡·Î ´õÇØÁÜ.
    if (nleft == 1){
        *(u_char *)(&answer) = *(u_char *)w ;
        sum += answer;
    }
 
    sum = (sum >> 16) + (sum & 0xffff);  // »óÀ§ 16ºñÆ®¿Í ÇÏÀ§ 16ºñÆ®¸¦ ´õÇÔ.
    sum += (sum >> 16);                  // carry bit °ªÀ» ´õÇÔ.
    answer = ~sum;                       // °ªÀ» ¹ÝÀü ½ÃÅ´.
    return(answer);                      // ¸®ÅÏ.
}

 

 

Á¶±Ý º¹ÀâÇÏÁÒ? ÇÏÁö¸¸ À§ °úÁ¤Àº üũ¼¶ °è»êÀ» À§ÇÑ ÀÏ·ÃÀÇ Á¤ÇØÁø ±ÔÄ¢¿¡ ºÒ°úÇÕ´Ï´Ù.

Çì´õ¿¡ Á¸ÀçÇÏ´Â ¸ðµç °ªÀ» ´õÇÑ ÈÄ, ±× °ªÀ» ¿ä¸® Àú¸® ÁöÁö°í ºº¾Æ¼­ Ưº°ÇÑ °ªÀ» ¸¸µé¾ú½À´Ï´Ù.

±×¸®°í ½ÇÁ¦ Çì´õ ³»¿ë°ú ÇÔ²² ÀÌ Ã¼Å©¼¶ÀÇ °ªÀÌ »ó´ë¹æ È£½ºÆ®·Î Àü´ÞµÇ°í, ÆÐŶÀ» ¹ÞÀº

È£½ºÆ®´Â ¹ÞÀº ÆÐŶÀÇ Çì´õ ³»¿ëÀ¸·Î ¶Ç Çѹø À§¿Í °°Àº üũ¼¶ °è»ê °úÁ¤À» °ÅÃÄ Æ¯º°ÇÑ °ªÀ»

¸¸µì´Ï´Ù. ¸¸¾à ¹ß½ÅÀÚ°¡ º¸³½ Çì´õ¿Í ¼ö½ÅÀÚ°¡ ¹ÞÀº Çì´õÀÇ °ªÀÌ 100% ÀÏÄ¡ÇÏ´Ù¸é, ´ç¿¬È÷

ÀÏ·ÃÀÇ °úÁ¤À» °ÅÃÄ »ý¼ºµÈ üũ¼¶ÀÇ °ªµµ ÀÏÄ¡ÇϰÚÁö¿ä? µû¶ó¼­ ¼ö½ÅÀÚ°¡ º¸³½ üũ¼¶°ú

¹ß½ÅÀÚ°¡ Á÷Á¢ °è»êÇÑ Ã¼Å©¼¶ÀÇ °ªÀ» ºñ±³ÇÏ¿©, ¸¸¾à ¼­·Î °°´Ù¸é ¿ÂÀüÇÑ ÆÐŶ, ´Ù¸£´Ù¸é

Àü¼Û °úÁ¤¿¡¼­ ÀÌ»óÀÌ »ý±ä ÆÐŶÀ¸·Î ÆÇ´ÜÇÏ´Â °ÍÀÔ´Ï´Ù. ¾ÆÁÖ ´Ü¼øÇÑ ¿ø¸®ÁÒ?

 

½±°Ô ¿¹¸¦ µé¾î, ¹ß½ÅÀÚ°¡ IP VERSIONÀÇ °ªÀ» 4·Î ÇØ¼­ ÆÐŶÀ» ¹ß¼ÛÇß´Ù°í ÇØº¾½Ã´Ù.

±×·±µ¥ ÀÌ ÆÐŶÀÌ Àü¼ÛµÇ´Â µ¿¾È ¾î¶² ¾Ë ¼ö ¾ø´Â ¿À·ù¿¡ ÀÇÇØ IP VERSIONÀÇ °ªÀÌ 8·Î

º¯Á¶ µÇ¾î¹ö·È´Ù°í °¡Á¤ÇսôÙ. ±×·³, IP VERSIONÀÌ 4ÀÏ ¶§ °è»êµÈ üũ¼¶ °ª°ú, 8ÀÏ ¶§

°è»êµÈ üũ¼¶ÀÇ °ªÀÌ ¼­·Î ´Ù¸£°ÚÁö¿ä? µû¶ó¼­ ÀÌ ÆÐŶÀº ¿Ã¹Ù¸£Áö ¾ÊÀº ÆÐŶÀ¸·Î ÆÇ´ÜµÇ¾î

¹ö·ÁÁö°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ¶Ç, ¸¸¾à üũ¼¶ °ª ÀÚü°¡ º¯°æµÇ¾ú´Ù°í ÇØº¾½Ã´Ù. ±×·³

±× ¶§µµ ¿ª½Ã ¹ß½ÅÀÚ°¡ º¸³½ üũ¼¶ °ª°ú ¼ö½ÅÀÚ°¡ °è»êÇÑ Ã¼Å©¼¶ÀÇ °ªÀÌ ´Þ¶ó¼­ ÆÐŶÀÌ

¹ö·ÁÁö°ÚÁö¿ä.

 

ÀÌÁ¦ À§ ÇÔ¼ö¸¦ ¿ì¸® Äڵ忡 Ãß°¡ÇÑ ÈÄ, üũ¼¶ º¯¼ö¿¡ °ªÀ» ³Ö´Â ºÎºÐ¿¡¼­ »ç¿ëÇÏ¸é µË´Ï´Ù.

¸ÕÀú IP Çì´õÀÇ Ã¼Å©¼¶ °ª ºÎºÐÀ» ¼öÁ¤ÇսôÙ.

 

Iphdr->check = 1;

 

-à ¼öÁ¤

 

iphdr->check = in_cksum( (u_short *)iphdr, sizeof(struct iphdr) );

 

¿©±â¼­ ÁÖÀÇÇÒ Á¡Àº üũ¼¶ÀÇ ÀÎÀÚ·Î ÃÖÁ¾ÀûÀ¸·Î ¸¸µé¾îÁø IP Çì´õ°¡ µé¾î°¡±â ¶§¹®¿¡

IP Çì´õ°¡ ¸ðµÎ ¸¸µé¾îÁø ´ÙÀ½ ºÎºÐ¿¡ À§ Äڵ带 ³Ö¾î¾ß ÇÑ´Ù´Â Á¡ÀÔ´Ï´Ù.

 

 

iphdr->version = 4;

iphdr->ihl = 5;

iphdr->protocol = IPPROTO_TCP;

iphdr->tot_len = 40;

iphdr->id = htons( 777 );

iphdr->ttl = 60;

iphdr->saddr = inet_addr( ¡°111.111.111.111¡± );

iphdr->daddr = inet_addr( ¡°218.149.4.60¡± );

iphdr->check = in_cksum( (u_short *)iphdr, sizeof(struct iphdr) );

 

 

ÀÌ·¸°Ô ¸»ÀÌ¿¡¿ä.

 

À̰ɷΠIP Çì´õÀÇ Ã¼Å©¼¶ °è»êÀº ³¡³µ°í, ±×·³ ÀÌÁ¦ TCPÀÇ Ã¼Å©¼¶ ºÎºÐÀ» ¼öÁ¤ÇØ º¾½Ã´Ù.

ÀÌ ºÎºÐÀº IP Çì´õÀÇ Ã¼Å©¼¶À» °è»êÇÏ´Â °Íº¸´Ù Á¶±Ý º¹ÀâÇÕ´Ï´Ù.

¿Ö³ÄÇϸé, TCP Çì´õÀÇ Ã¼Å©¼¶À» °è»êÇÒ ¶§´Â ƯÀÌÇÏ°Ô ¡°°¡»ó Çì´õ¡±¸¦ Ãß°¡·Î ¿ä±¸Çϱâ

¶§¹®ÀÔ´Ï´Ù.

 

±×³É IP Çì´õÀÇ Ã¼Å©¼¶À» °è»êÇÒ ¶§¿Í °°ÀÌ TCP Çì´õ °ª¸¸ ³Ö¾îÁÖ¸é ÁÁ¾ÒÀ» Å×Áö¸¸, ¹«½¼ ÀÌÀ¯°¡

ÀÖÀ¸´Ï óÀ½ ÀÌ ·çƾÀ» ¼³°èÇÑ ÇÁ·Î±×·¡¸ÓµéÀÌ ÀÌ·± °úÁ¤À» ¿ä±¸Çß°ÚÁö¿ä? (¹«½¼ ÀÌÀ¯Àϱ)

 

¿©ÇÏÆ° ±× °¡»ó Çì´õ¶õ ´ÙÀ½°ú °°Àº ¸ð¾çÀ» °¡Áö°í ÀÖ´Â °ÍÀÔ´Ï´Ù.

°¡»ó Çì´õ¶õ, ½±°Ô ¸»ÇØ ¿ø·¡´Â Á¸ÀçÇÏÁö ¾Ê´Â Çì´õ¶ó´Â ¶æÀ» °¡Áö°í ÀÖ½À´Ï´Ù.

Áï, üũ¼¶ °è»êÀ» À§ÇØ Àӽ÷Π»ý¼ºÇÏ´Â Çì´õ¸¦ ¸»ÇÏ´Â °ÍÀÌÁö¿ä.

 

 

struct pseudohdr  {
    u_int32_t   saddr;      // ¹ß½ÅÀÚÀÇ IP.
    u_int32_t   daddr;      // ¼ö½ÅÀÚÀÇ IP.
    u_int8_t    useless;    // ¾ÆÁ÷ »ç¿ëµÇÁö ¾ÊÀ½.
    u_int8_t    protocol;   // ÇÁ·ÎÅäÄÝ.
    u_int16_t   tcplength;  // TCP Çì´õÀÇ ±æÀÌ.
};

 

 

ÀÌ ±¸Á¶Ã¼ ¼±¾ð ·çƾÀ» ¿ì¸®ÀÇ ÄÚµå ¾Õ ºÎºÐ¿¡ Ãß°¡ÇÕ´Ï´Ù.

±×·³ ÀÌÁ¦ °¡»ó Çì´õ¸¦ ¸¸µé°í, °ªÀ» ä¿ö¼­, TCP Çì´õ¿Í ÇÔ²² üũ¼¶ °è»ê ÇÔ¼ö·Î

º¸³»´Â ºÎºÐÀ» Á¦ÀÛÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

¿ì¸®°¡ in_cksum() ÇÔ¼öÀÇ Ã¹¹øÂ° ÀÎÀÚ·Î º¸³»¾ß ÇÏ´Â °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

[ °¡»ó Çì´õ ] + [     TCP Çì´õ     ]

 

À§ °°Àº ¸ð¾çÀ» ¸¸µé·Á¸é TCP Çì´õÀÇ ½ÃÀÛ ºÎºÐ¿¡¼­ °¡»ó Çì´õ ¸¸Å­ÀÇ ±æÀ̸¦ »«

À§Ä¡¸¦ °¡»ó Çì´õÀÇ ½ÃÀÛ ºÎºÐÀ¸·Î ÁöÁ¤Çϰí, ±× ´ÙÀ½¿¡ °¡»ó Çì´õÀÇ °ªÀ» ä¿ö ³ª°¡¸é

µÇ°ÚÁö¿ä?

 

¸ÕÀú °¡»ó Çì´õ ±¸Á¶Ã¼ º¯¼ö¸¦ ¼±¾ðÇϰí,

 

struct pseudohdr *pseudo_header;

 

¾Õ¼­ ¸»ÇÑ °Íó·³ ÀÌ Çì´õÀÇ ½ÃÀÛ À§Ä¡¸¦ Á¤ÇØ ÁÝ´Ï´Ù.

 

pseudo_header = tcphdr – sizeof( struct pseudohdr );

 

Çü º¯È¯À» Àß ÇØÁÖ¾î¾ß ÄÄÆÄÀÏ ÇÒ ¶§ ¿¡·¯°¡ ³ªÁö ¾Ê°ÚÁÒ?

 

pseudo_header = (struct preudohdr *)( (char *)tcphdr – sizeof( struct pseudohdr) );

 

ÀÌÁ¦ °ªµéÀ» ä¿ö ³ª°¡ º¾½Ã´Ù.

 

 

pseudo_header->saddr = inet_addr( ¡°111.111.111.111¡± );

pseudo_header->daddr = inet_addr( ¡°218.149.4.60¡± );

pseudo_header->protocol = IPPROTO_TCP;

pseudo_header->tcplength = htons( sizeof(struct tcphdr) );

 

 

¸¶Áö¸·À¸·Î üũ¼¶ °è»ê ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ³¡~! ¿ª½Ã tcphdr »ý¼º ºÎºÐÀÇ °¡Àå ¾Æ·¡ÂÊ¿¡

³Ö¾îÁà¾ß µÇ°ÚÁÒ? ¾Õ¼­ ¼³¸íÇÑ ·çƾµéµµ °¢°¢ ¾Ë¸ÂÀº ºÎºÐ¿¡ ³Ö¾îÁà¾ß ÇÒÅ×±¸¿ä.

 

tcphdr->check = in_cksum( (u_short *)pseudo_header, sizeof(struct pseudohdr) + sizeof(struct tcphdr) );

 

ÀÚ, ±×·³ ÃÖÁ¾ÀûÀ¸·Î ¿Ï¼ºµÈ ¼Ò½º Äڵ带 È®ÀÎÇØ º¸µµ·Ï ÇսôÙ.

 

 

 

// üũ¼¶ ·çƾÀÌ Ãß°¡µÈ raw_socket.c

 

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <arpa/inet.h>

#include <netinet/in.h>

#include <linux/ip.h>

#include <linux/tcp.h>

 

// üũ¼¶À» ±¸ÇÏ´Â ÇÔ¼ö ¼±¾ð/Á¤ÀÇ.

unsigned short in_cksum(u_short *addr, int len)

{

        int         sum=0;

        int         nleft=len;

        u_short     *w=addr;

        u_short     answer=0;

 

        while (nleft > 1){

        sum += *w++;

        nleft -= 2;

        }

 

        if (nleft == 1){

        *(u_char *)(&answer) = *(u_char *)w ;

        sum += answer;

        }

 

        sum = (sum >> 16) + (sum & 0xffff);

        sum += (sum >> 16);

        answer = ~sum;

        return(answer);

}

 

// °¡»ó Çì´õ ±¸Á¶Ã¼ ¼±¾ð

struct pseudohdr {

        u_int32_t   saddr;

        u_int32_t   daddr;

        u_int8_t    useless;

        u_int8_t    protocol;

        u_int16_t   tcplength;

};

 

int main()

{

        unsigned char packet[40];

        int raw_socket;

        int on = 1 ;

        struct iphdr *iphdr;

        struct tcphdr *tcphdr;

        // ÁÖ¼Ò Á¤º¸¸¦ ´ãÀ» º¯¼ö. ¸Å¹ø IP¸¦ Àû±â ±ÍÂúÀ¸´Ï º¯¼ö·Î »ç¿ëÇÕ´Ï´Ù.

        struct in_addr source_address, dest_address;

        struct sockaddr_in address;

        // °¡»ó Çì´õÀÇ ±¸Á¶Ã¼ º¯¼ö.

        struct pseudohdr *pseudo_header;

 

source_address.s_addr = inet_addr( ¡°111.111.111.111¡± );

dest_address.s_addr = inet_addr( ¡°218.149.4.60¡± );

 

raw_socket = socket( AF_INET, SOCK_RAW, IPPROTO_RAW );

setsockopt( raw_socket, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on));

         

        iphdr = (struct iphdr *)packet;

        memset( (char *)iphdr, 0, 20 );

        tcphdr = (struct tcphdr *)(packet + 20 );

        memset( (char *)tcphdr, 0, 20 );

 

        tcphdr->source = htons( 777 );

        tcphdr->dest = htons( 12345 );

        tcphdr->seq = htonl( 92929292 );

        tcphdr->ack_seq = htonl( 12121212 );

        tcphdr->doff = 5;

        tcphdr->syn = 1;

        tcphdr->window = htons( 512 );

 

        // °¡»ó Çì´õ »ý¼º.

        pseudo_header = (struct pseudohdr *)((char*)tcphdr-sizeof(struct pseudohdr));

 

        pseudo_header->saddr = source_address.s_addr;

        pseudo_header->daddr = dest_address.s_addr;

        pseudo_header->protocol = IPPROTO_TCP;

        pseudo_header->tcplength = htons( sizeof(struct tcphdr) );

        // TCP üũ¼¶ °è»ê.

        tcphdr->check = in_cksum( (u_short *)pseudo_header,

sizeof(struct pseudohdr) + sizeof(struct tcphdr) );

 

iphdr->version = 4;

        iphdr->ihl = 5;

        iphdr->protocol = IPPROTO_TCP;

        iphdr->tot_len = 40;

        iphdr->id = htons( 777 );

        iphdr->ttl = 60;

        iphdr->saddr = source_address.s_addr;

        iphdr->daddr = dest_address.s_addr;

        // IP üũ¼¶ °è»ê.

        iphdr->check = in_cksum( (u_short *)iphdr, sizeof(struct iphdr));

 

        address.sin_family = AF_INET;

        address.sin_port = htons( 12345 );

        address.sin_addr.s_addr = dest_address.s_addr;

 

        sendto( raw_socket, &packet, sizeof(packet), 0x0,

(struct sockaddr *)&address, sizeof(address));

}

 

 

ÀÚ, ÀÌÁ¦ ¼öÁ¤µÈ Äڵ带 ÄÄÆÄÀÏ ÇÑ ÈÄ, ÆÐŶÀ» Àü¼ÛÇØ º¾½Ã´Ù.

±×¸®°í °á°ú¸¦ ÆÐŶ ½º´ÏÆÛ·Î È®ÀÎÇØ º¸¸é, À̹ø¿¡´Â Áö³­ °­Á¿¡¼­¿Í´Â ´Ù¸£°Ô ´ÙÀ½°ú °°ÀÌ

¿ì¸®ÀÇ ÆÐŶ¿¡ ´ëÇÑ ÀÀ´ä ÆÐŶÀÌ °¡´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

                          [ SYN+ACK Ç÷¡±×¸¦ ´ãÀº ÀÀ´ä ÆÐŶÀÌ Àü¼Û µÊ ]

 

ÀÌó·³ üũ¼¶ÀÇ °ª¿¡ µû¶ó ÇØ´ç ÆÐŶÀÌ À¯È¿ÇÑÁö ¹«È¿ÇÑÁö°¡ °áÁ¤µÈ´Ù´Â Á¡À» ¾Ë ¼ö ÀÖ¾ú½À´Ï´Ù.

±×·³ À̹ø °­Á´ ¿©±â¼­ ¸¶Ä¡µµ·Ï Çϰí, ´ÙÀ½ °­Á¿¡¼± ¸¶Áö¸·À¸·Î Stealth ScannerÀÇ ÀÛµ¿ ¿ø¸®¿¡

´ëÇÏ¿© ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.