블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, Kali Linux 2022.03, CentOS 6.5 를 활용 합니다.

TCP SYN Flooding

  • TCP가 데이터를 보내기 전에 연결을 먼저 맺어야 하는 연결지향성을 이용한 방법
  • Attacker는 Victim에 Source IP Address를 Spoofing 하여 SYN 패킷을 특정 포트로 전송하여 해당 포트의 대기 규(Backlog Queue)를 가득 차게 하여 해당 포트에 들어오는 정상적인 연결요청을 큐가 빌 때까지 무시하도록 한다.
  • UDP Flooding 이 주류를 이루기 이전에 많이 사용되던 방식
  • 시스템 부하 -> 메모리 부하(프로그램의 Backlog Queue)

Backlog Queue

  • TCP 서비스에서 클라이언트의 연결 상태정보를 기억하기 위한 공간(IP로 구분)
    • SYN Backlog -> 클라이언트의 SYN을 받고 SYN/ACK를 전달한 SYN_RCVD 상태정보 기억
    • Listen Backlog -> SYN/ACK의 대한 응답 받은 Esablished 상태 정보 기억

dhcp spoofing1

공격원리

  • 출발지 IP를 Random하게 변조하여 연결요청(SYN)을 전달한다.
  • 공격 대상의 Backlog Queue가 가득 차서 정상 클라이언트의 연결 정보를 저장 하지 못하게 된다.
  • #hping3 –rand-source [공격대상 IP] -p 80 -S –flood

dhcp spoofing1

Kali에서 Wire shark 실행

dhcp spoofing1

Kali에서 공격

  • 공격하기전 만약 web server가 centos에 설치가 안되어있다면 yum -y install httpd를 입력해 설치해준다.
  • 필자는 웹 서버가 이미 구축되어 있다.

dhcp spoofing1

공격 성공

dhcp spoofing1

centos에서 확인

dhcp spoofing1

보안

  • 시스템 최적화
    • Backlog Queue 사이즈 증가, SYN_RCVD 대기시간 단축, Registry 설정
  • syncookie 기능 활성화
  • 보안 솔루션을 통한 방어

syncookie

  • SYN Flooding을 발생했을 때 정상 사용자의 Connection을 보장하는 기술
  • 연결요청(SYN)의 초기 순서번호(ISN)를 이용하여 정상 연결된 연결을 구분 한다
  • 동작 순서
    • 클라이언트의 SYN에 대한 SYN/ACK를 전달한 후 ISN을 식별값으로 설정한다.
    • syncookie에게 전달 정보를 전달하고 서버는 SYN에 대한 정보를 Backlog Queue에서 삭제 한다.
    • 이용 정상적인 확인 응답(ACK)를 전달받아서 3WQY-Handshake가 정상적으로 이뤄지면 깃별값(ISN)을 이용하여 Backlog Queue에 클라이언트 정보를 복원시킨다.
  • vim /etc/sysctl.conf
  • #sysctl net.ipv4.tcp_syncookies=1

dhcp spoofing1