Suricata는 sudo /usr/bin/suricata –c /etc/suricata/suricata.yaml –I (이더넷 이름) –init-errors-fatal 명령어로 실행할 수 있다.
Suricata 룰에 대한 설정은 sudo vi /etc/suricata/suricata.yaml 명령어로 수정할 수 있다.
그리고 Suricata의 log를 확인하려면 cat /var/log/suricata/fast.log 명령어를 사용한다.
1.LAND Attack
인위적으로 송신지 IP 주소 및 Port를 목적지 (대상 웹서버) IP주소 및 Port와 동일하게 설정하여 트래픽을 전송하는 공격, 즉 source IP spoofing이라 한다. 송신지 IP/Port와 목적지 IP/Port가 동일하기 때문에 네트워크 장비의 부하를 유발하기도 한다. 최근에는 source IP와 destination IP를 IPS 등에서 비교하기 때문에 거의 효과가 없는 공격이다. LAND Attack은 다음 명령어로 공격한다.
hping3 –icmp [피해자IP] –d [data_size] –flood –a [피해자 IP]
어느 정도 시간이 지난 후에 Ctrl+C를 이용해 공격을 종료한다. 그리고 WireShark로 패킷에 대한 정보를 확인하여 보면 다음과 같은 결과가 나온다.
출발지와 목적지가 피해자 IP로 동일한 것으로 보아 IP가 변조되었다는 것을 확인할 수 있다. 따라서 다음과 같은 룰을 suricata에 추가하여 준다.
drop tcp any any -> any any (msg:”Land Attack”; sameip; sid:1000056;)
다시 공격을 시작하고 시간이 지난 후에 suricata와 공격 모두 종료하면 suricata에 다음과 같은 결과가 도출된다.
85.84%의 높은 드랍율로 피해를 최소화한 것을 확인할 수 있다.
2.Ping Of Death
Ping of Death는 인터넷 프로토콜 허용 범위인 65,536바이트 이상의 큰 패킷을 고의로 전송하는 서비스 거부(Dos: Denial of Service)공격 이다. 공격자의 식별 위장이 용이하고 인터넷 주소 하나만으로도 공격할 수 있다. 다음과 같은 명령어로 공격할 수 있다.
hping3 -–icmp [피해자IP] –d 65000 –flood
어느 정도 시간이 지난 뒤에 종료하고 이번에도 wireshark에서 패킷을 확인한다
시스템이 눈에 띄게 느려졌다는 것을 확인할 수 있었다. 패킷에 보면 데이터에 X문자열 (58)을 채워서 보냈다는 것을 확인할 수 있다. 따라서 다음과 같이 룰을 설정하여 준다.
drop ip any any -> $HOME_NET any (msg:”Ping of Death”; content:”|5858585858|”; threshold: type both, track by_src, count 10, seconds 5; sid:10000002; rev:001;)
룰을 설정하고 suricata를 실행 한 뒤에 다시 공격하고 어느 정도 시간이 지나면 종료한다.
37.89%의 드랍율로 어느 정도 피해를 최소화하였다. 이 룰을 사용하지 않았을 때는 드랍율이 0%였다.
3.Nmap 포트 스캐닝
포트 스캐닝은 대상 컴퓨터의 TCP와 UDP 포트 상태를 알아보는 것으로 공격자가 정보수집을 할때 Target PC에 자주 하는 방법이다. 포트를 차단하는 것도 좋지만 스캔하는 경우를 탐지하여 관리자가 인식하는 경우도 나쁘지 않다.
Nmap Scan Type의 종류는 다음과 같다
SYN 포트스캔 명령어는 다음과 같다.
Namp –sS [피해자 IP]
위의 명령어로 공격을 하게 되면 공격자는 다음과 같이 열려있는 포트를 확인할 수 있다.
22/TCP 포트가 오픈되어 있다는 걸 알 수 있게 되었다.
피해자의 wireshark를 확인하여 보면 다음과 같은 결과가 나온다.
SYN스캐닝이 진행된 것을 확인할 수 있다.
포트가 열려있으면 SYN+ACK 포트가 닫혀있으면 RST+ACK이 오는 것을 확인할 수 있다. 다음과 같은 명령어로 탐지할 수 있다.
Alert tcp [피해자 광대역 라우터] any-> [피해자ip] any (msg:”SYN Scan Checkk”; flags:S threshold:type both, track by_src, count 5, seconds 10; sid:1000051;)
다음과 같이 192.168.129.130에서 공격한 것을 탐지했다.
나머지 포트 스캔 공격도 비슷한 룰로 flags 부분을 수정하여 탐지할 수 있다.
4.SYN Flood 공격
SYN Flooding 공격이란 TCP 세션이 연결될 때의 취약성을 이용한 서버 공격이다. 접속을 요청하는 SYN 패킷을 지속적으로 보내어 대상 서버에 연결 테이블을 가득 차게 만든다. 결국 공격자는 피해자를 응답에 대해 전혀 수신하지 못하는 상태로 만든다. 다음 명령어로 공격할 수 있다. 공격을 할 때는 DDOS공격처럼 rand한 IP로 보내는 설정을 추가한다 .
hping3 –syn –S [피해자IP] --flood –rand-source
공격한 후 wireshark를 확인하면 다음과 같은 결과가 도출된다.
SYN Flood Attack이 랜덤한 IP로 0번 포트에 공격해 온 것을 확인할 수 있다. Flag가 S이므로 반복적으로 오는 SYN패킷을 막아주어야 한다. 목적지는 피해자 IP로 같으므로 track by_dst 옵션을 사용한다. 따라서 다음과 같은 룰을 사용한다.
Drop tcp any any -> $HOME_NET any (flags : S; msg:”Syn Flood Attack!”; threshold: type both, track by_dst, count 3, seconds 1; sid:10000003;rev:001;)
룰을 저장하고 다시 공격해본다.
35%의 드랍율로 피해를 최소화하였다. 공격할 때마다 1%~35%까지의 랜덤한 드랍율을 보인다.
※본 연구는 지극히 주관적인 연구이고 결과와 과정이 정확하지 않을 수 있습니다.
'네트워크<구축,해킹,보안> > Snort,Suricata' 카테고리의 다른 글
IDS , IPS 그리고 Snort와 Suricata (0) | 2018.01.31 |
---|