-7.7DDOS
2009년 7월 7일을 기점으로 대한민국과 미국의 주요 정부기관, 포털 사이트, 은행 사이트 등을 DDoS 공격으로 서비스를 일시적으로 마비시킨 사건이였다. 북한의 소행으로 밝혀졌다. 1차~4차 공격이 있었으며 미국 시간으로 7월 4일인 독립 기념일에 시작되었다. 백악관을 비롯한 여러 사이트를 공격했다 
1차 공격은 7월 7일 18시 정도에 시작되었고 하루동안 지속되었다. 미국과 대한민국을 공격했으며 백악관, 청와대, 주요 정당, 주요 언론사가 포함되어 있었다.
2차 공격은 7월 8일 18시에 시작되었고 하루동안 지속되었다. 1차 공격 리스트에 있었던 사이트 일부와 주요 포털 사이트의 메일서비스를 대상으로 공격했다.
3차 공격은 7월 9일 18시에 시작되었고 금융기관 홈페이지와 국정원에 장애를 빚었지만 곧 정상화 되었다.
하드디스크 파괴 코드 발견 (마스터 부트 레코드를 손상시킴)
안철수 연구소는 1차공격 직후 전용백신 공급하고 공격을 받은 포털들도 대응이 빨랐음(서버 바꾸기)

-125인터넷 대란
마이크로소프트의 SQL 서버의 허점을 이용한 '슬래머 웜'을 이용하여 2003년 1월 25일 대한민국의 인터넷 망이 마비된 사건.
'슬래머 웜'에 감염된 PC들이 KT혜화 전화국에 있는 DNS 서버에 트래픽을 집중시켜 마비되자, 백본망으로 우회하며 다른 DNS 서버도 순차적으로 마비가 되었다. 






-3.20전산 대란
320 전산대란은 2013년 3월 20일 대한민국 주요 언론,기업의 전산망이 마비되고, 다수의 컴퓨터가 악성코드에 감염되어 피해를 입은 사건이다.  악성코드가 하우리와 안랙의 백신 프로그램 구성파일로 위장하여 전산망 마비를 일으켰다고 한다. 이 악성코드는 2013년 3월 20일 오후 2시가 되면 시스템을 파괴하도록 설계되어 있었다. 
마스터 부트 레코드(MBR)와 볼륨 부트 레코드(VBR)을 파괴하여 컴퓨터가 부팅이 되지 않았다. 이 때문에 여러 언론사가 피해를 입어 업무에 차질이 생겼다. 여러 은행도 피해를 입어 피해를 예방하기위해 망분리를 실시 하였다.

-농협 전산망 마비 사태
2011년 4월 12일 농협 전산망에 있는 자료가 대규모로 손상되어 서비스가 마비된 사건이다. 사이버 테러의 가능성인줄 알았지만 사실 보안불감증의 대표적인 사례이다. 북한의 소행으로 밝혀졌으며 서버 유지보수를 맡은 한국 IBM 직원이 서버관리 업무에 쓰는 노트북을 커피숍에서 무료 다운로드 쿠폰이 있는 웹하드 사이트에서 영화를 받다가 악성코드에 감염이 되었다. 이 노트북으로 농협 전산망이 악성코드에 감염이 되었고 수많은 좀비PC를 만들었다. 2011년 4월 12일 8시 20분경에 공격명령 파일이 설치되었고 오후 4시 50분경 인터넷을 이용한 원격제어로 공격 프로그램을 실행했다. '삭제 명령'을 내리자 1차 공격을 전산망 서버들이 좀비 PC로 변하여 다른 서버를 공격하여 30분만에 서버 절반이 파괴되었다.

윈도우키+R을 누르면 실행창이 열린다. 여기에 CMD를 입력하자. 그리고 ipconfig 라는 ip를 입력하면 자신의 아이피가 보일 것이다.





IPv4 주소가 현재 인터넷 ip주소인 것이다. 하지만 여기서 192.168로 시작하는 IP주소는 가상의 IP 주소이다.
공인 IP주소가 아닌 사설 IP 주소라는 뜻이다. 
이게 무슨말이냐면 공인 IP주소를 받아와서 흔히 말하는 공유기를 거쳐 나오는 IP라는 뜻이다.

사설 IP로는 인터넷을 할 수 없다. 하지만 우리는 저 IP로 인터넷을 할 수 있는데, 그 이유는 공유기에 NAT가 있기 때문이다.
NAT는 네트워크 주소 변환으로 사설 IP를 공인 IP로 바꿔주는 기능을 한다. 
그렇다면 나의 공인 IP는 어떻게 알 수 있을까?

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%B4+IP%EC%A3%BC%EC%86%8C


이곳에 들어가면 나오는 IP가 나의 공인 IP 주소인 것이다.

여기에 나오는 나의 아이피를 
https://whois.kisa.or.kr/kor/main.jsp


이곳에 들어가 입력하면 나의 IP를 할당해준 기관이 나온다.
왜 자세한 위치는 안나오고 기관만 나올까? 
개인정보 보호 때문이다. 만약 이 IP로 사이버 범죄를 저질렀을 때, 할당된 기관을 확인하여 수사 의뢰를 하면 그 기관에서 나의 정보가 넘어갈 것이다. 그래서 일반인은 자세한 정보를 알 수 없다.

114.232.118.96 라는 IP로 검색을 해보자 . 좀 더 자세하게 나온다. (해킹 연습을 할때 쓰는 IP로 알고 있음)

어떠한 도메인 사이트에 서버 위치가 어디에 있는지도 알 수가 있다.
방법은 CMD 창에서 nslookup을 쓰는 방법인데 아래에서 살펴보자.










nslookup www.snu.ac.kr 
이것은 서울대학교의 도메인 주소이다. nslookup을 쓰고 서울대 도메인을 쓰면 
kaku2.snu.ac.kr의 이름으로 147.46.10.58의 주소가 나온다.

이것을 위에 알려준 한국인터넷 진흥원에 입력하면 서울대학교 정보화본부 라는 대략적인 정보를 알 수 있다.

만약에 누군가 해킹을 한 흔적(패킷)이 발견되어서 위와같이 위치를 알아서 경찰이 출동했다고 하자.
그사람에게 해킹했다는 완벽한 증거를 알아내야 한다. 공공장소라면 똑같이 사설IP를 할당받을 수도 있다.
그래서 그 IP를 사용하는 사람을 채포하려고 하자 자기는 하지 않았다고 한다. 
이와 같은 상황에는 어떻게 해야할까.

일단 사설IP를 할당하는 장비로 가서 패킷을 확인한다. (패킷 확인을 위해 WireShark를 사용해보자)





이와같이 의심되는 패킷을 찍어서 2계층 (Ethernet II) 부분에 Src (출발지) Dst(목적지) 의 모자이크 된 부분으로 MAC주소를 확인할 수 있다.

MAC주소란 컴퓨터에 할당된 고유의 주소로 컴퓨터 지문이라고 생각하면 편하다. 만약 이 MAC주소로 방금 해킹한 사람의 노트북에 있는 MAC와 비교하여 일치할 경우 유력한 용의자가 될 것이다. IP주소도 같고, MAC도 같은데 발뺌을 한다고 하면
"나는 280조분의 1 확률로 재수가 없는 사람입니다." 라고 말하는 꼴이다. MAC주소가 겹칠 확률은 280조분의 1이다.

아무리 유능한 해커라도 패킷을 숨길 수는 없다.


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%까지의 랜덤한 드랍율을 보인다.



※본 연구는 지극히 주관적인 연구이고 결과와 과정이 정확하지 않을 수 있습니다.


http://hsm-racoon.tistory.com/36?category=988567

-이번에도 먼저 Cisco Packet Tracer 먼저 보시고 오길 추천합니다




일단  static routing을 한것을 다 지워줍시다
no ip route 하시고 지정한것 똑같이하시면 지워집니다
그리고 특권모드에서
show ip route 하시면 직접연결된 것 빼고 라우팅이 다 없어진 것을 확인 하실 수 있습니다.
다른것도 일단 라우팅 다 지워줍시다.
(전에 포스팅 한 것에서 static routing 안하셨으면 그냥 넘어가셔도 됩니다)





라우팅 전에는 통신이 되던게 라우팅을 다 지우고 나서는 통신이 되지않는 모습입니다.
이제 Dynamic Routing을 하도록 하겠습니다.

다이나믹 라우팅은 라우터 양옆에 주소만 적어주면 알아서 서로 통신을 하여 라우팅테이블을 갱신합니다. (자세한 설명은 맨위에 링크 참조 바랍니다.)





다음과같이 R2는 양옆에 있는 네트워크 주소 1.1.1.0 // 2.2.2.0 을 추가하여 줍니다.









R1도 양옆 네트워크 주소 추가하여 주시고




R3도 양옆 네트워크 추가하여 줍시다.
그다음 라우팅 테이블을 확인하여 봅시다.





특권모드로 나오시고
show ip route
하셔서 R3의 라우팅 테이블을 확인하시면 
R 표시로 자동으로 라우팅 된 것을 확인하실 수 있습니다. R1,R2 라우터도 자동으로 라우팅테이블에 추가가 되었을 것입니다.
그럼 다시 4.4.4.4에서 1.1.1.10으로 핑을 보내봅시다.





아까는 안되던 핑이 지금은 자동으로 라우팅 되서 ping이 보내지는것을 확인할 수 있습니다.

이것으로 Dynamic Routing 을 마치겠습니다.


http://hsm-racoon.tistory.com/35?category=988567


GNS3로 하기에는 프로그램이 무거우므로 먼저 Cisco Packet Tracer로 하시는걸 추천합니다.
자세한 설명도 하였으니 꼭 한번 읽고오시길 추천합니다.




설정은 전에 했던 설정을 그대로 가져오겠습니다. R2라우터를 오른쪽 클릭하여 console로 들어갑시다.





라우터가 말단 라우터이므로 Default Routing을 하도록 하겠습니다.
static 으로 주려면 
ip route 4.4.4.0 255.255.255.0 2.2.2.1
ip route 3.3.3.0 255.255.255.0 2.2.2.1 
을 해주면 됩니다. (설명은 링크참조)
다음은 R1 입니다.





1.1.1.0 과 4.4.4.0의 주소를 모르므로 
1.1.1.0은 2.2.2.2로 가고 4.4.4.0 은 3.3.3.2로 가라고 라우팅 해줍니다.

다음은 R3입니다.









이렇게 각각 줘도 되지만 Default Routing으로
ip route 0.0.0.0 0.0.0.0 3.3.3.1 
로 줘도 가능합니다~





이제 칼리리눅스 들어가셔서
vi /etc/network/interfaces
하시고 eth0  ip를 설정해줍니다. 
당연히 kali의 게이트웨이는 바로위에있는 라우터인 1.1.1.1 입니다.





win7도 4.4.4.4로 ip를 설정합니다.





그리고 1.1.1.10에 대해 ping을 보내면 잘 가는것을 알 수 있습니다.
-칼리리눅스 아이피 설정하시고 꼭 reboot 해주세요~

다음은 Dynamic Routing을 해보겠습니다.


멀티레이어 스위치는 L2스위치랑 다르게 트렁크를 지정해줄 필요가 없다.
L3스위치는 라우팅기능을 추가해주어야 L3스위치처럼 작동한다.
실제로도 L3스위치를 구비해놓고 라우팅기능을 넣지않으면 L2스위치랑 똑같다.





위와 같이 환경을 설정할 것이다.





VLAN을 나누는것은 똑같다.





전에 포스팅 한것과 똑같다. 인터페이스 나눠주자.





VLAN을 나눠주고










확인한다.
L3 Switch는 라우터 기능까지 있기때문에 스위치 자체가 라우터 기능도 한다.
따라서 트렁크포트를 지정해줄 필요가 없다.! 바로 VLAN에 아이피를 주도록 하자.





이런식으로 바로 int vlan 10 , int vlan 20 같이 VLAN 이름을 지정하여 바로 지정이 가능하다.





show ip interface brief / 줄여서 sh ip int bri 를 입력하여 아래로 내려보면
VLAN 10, VLAN 20에 IP가 지정된 것을 볼 수 있다.





그래서 192.168.0.2 PC에서 같은 VLAN인 192.168.0.3에는 ping이 보내지는데
192.168.0.129 인 옆 VLAN에는 ping이 가지않는다.
왜그럴까?
이유는 아까 말했듯이 라우팅 기능을 L3 Switch에 지정을 해주어야 한다.





명령어는 간단하다.
ip routing
이것을 해주고 sh ip rou 명령어로 라우팅 테이블을 확인하자.





다시 ping을 보내면 잘 가는것을 확인 할 수 있다.!


스위치 하나로 스위치 여러 개를 쓰는 것처럼 하기 위해서 VLAN을 사용한다.
사실상 스위치를 줄여서 비용을 절감하고 LAN끼리 보안을 하기 위해서 사용한다.

VLAN을 지정해줄 때는 순서가 있다.
스위치에서
1.VLAN 생성 / 이름설정
2.VLAN에 interface 넣어주기
3.라우터와 연결된 interface에 트렁크 설정을 해준다.

라우터에서
물리적으로 하나의 선으로 여러 개의 VLAN과 통신해야 하기때문에
1.가상의 이더넷을 만들어준다.
2.가상의 이더넷 하나마다 IP를 지정해준다.

하나씩 해보자. 
환경부터 설정한다.





VLAN10에 있는 인터페이스는 fa0/1 , fa0/2 이고 아이피는 2번과 3번이다.
VLAN20에 있는 인터페이스는 fa0/23, fa0/24이고 아이피는 129번과 130번이다.
fa0/12는 VLAN 2개가 모여 하나의 선으로 나가기 때문에 트렁크로 지정을 해준다.
라우터는 2개의 VLAN에서 주는 통신을 하나의 선으로 처리해야 하기 때문에 
fa0/1.1 은 VLAN1 fa0/1.2는 VLAN2에 대한 선으로 지정해준다.

스위치부터 봐보자.





show vlan을 입력하면 현재 vlan 목록이 나온다. 1번 vlan에 모든 인터페이스가 몰려있는 것을 볼 수 있다. 이제 이 인터페이스들을 vlan으로 나눠주자.



VLAN 10을 만들고 이름을 지정하고 VLAN20을 만들고 이름을 지정해주자.





fa0/1을 vlan 10에 넣어준다
switchport mode access 
switchport access [VLAN 이름]
으로 지정해줄수 있다. 다른 인터페이스들도 다 나눠주자.

그다음 다시 VLAN이 잘 나눠졌는지 설정을 확인해보자









아까랑 다르게 VLAN 10, 20번에 각각 0/1,0/2 와 0/23 ,0/24 인터페이스가 들어간 것을 볼 수 있다.





PC1(192.168.0.2)에서 같은 LAN에 있는 192.168.0.3으로는 ping 가는것을 확인 할 수 있지만
다른 VLAN으로 지정된 192.168.0.130에는 ping이 가지 않는것을 확인 해 볼 수 있다.
이제 이 2개의 VLAN이 통신이 되게 트렁크 설정을 해주고 라우터에서 라우팅을 해줘야 한다.
다시 스위치로 가보자.





fa0/12이 두 개의 VLAN이 모두 가야하는 인터페이스 이므로 트렁크 설정을 해준다.
원래는 802.1q 프로토콜설정, native VLAN 설정, trunk port로 통신을 허용할 vlan 설정
VLAN의 gateway IP를 설정해주어야 하지만 여기서는 설정할 필요가 없으므로
그냥 넘어가도록 하겠다.


다음은 라우터이다.





일단 fa0/0을 no shutdown을 해주고
int fa0/0.1 을 입력하면 바로 Inter VLAN이 up 된다. 그다음
encapsulation dot1q [VLAN이름] 으로 trunk mode 및 VLAN을 설정해준다.
ip address [IP주소] [서브넷마스크] 로 IP를 설정해주도록 한다. 





fa0/0.2 도 똑같이 설정한다.





이제 VLAN10에 있는 PC가 VLAN20에 있는 PC와 통신이 가능하게 되었다.




Dynamic NAT가 N:M이라면 NAT-PAT는 N:1이다.
한개의 공인ip로 여러 사설ip를 커버하는 요즘 공유기 같은 방식이다.





환경설정은 다음과 같다. Dynamic과 Static을 실습하고 왔다면 깔끔하게 라우터를 없애고 새로 하는게 편하다. 아무 설정이 안되어 있는 상태여야 실습하기가 편하다.

NAT-PAT는 두가지 방법이 가능하다.
1.Pool을 지정해줘서 여러 공인아이피를 돌아가면서 설정해주는 방법
(Dynamic NAT와 비슷하지만 Dynamic NAT는 선점한 컴퓨터가 있으면 나머지는 기다리는 구조이지만 NAT-PAT는 포트번호를 다르게해서 기다리는 컴퓨터가 없이 통신이 가능하다)
2.공인ip 1개로 인터페이스를 지정해주는 방법
(1:m구조이다)

1,2번 공통으로 하는 사설ip를 지정해주는 명령어다.
access-list [숫자] permit [사설ip주소] [와일드카드]
-와일드 카드는 서브넷마스크를 보수로 취한 값이다.
그 다음 1번은 Dynamic NAT처럼 
ip nat pool [이름] [공인ip시작] [공인ip 끝] net mask [subnetmask] 
를 지정한 후에
ip nat inside source list [숫자] pool [이름] overload
을 해주면 된다. Dynamic NAT랑은 다르게 뒤에 overload 라는 명령어가 추가된다.
-Dynamic NAT 포스팅에서도 했듯이 여기서 [숫자]는 같은값이어야하고 [이름]도 같은 값이여야 한다.!
-이해가 안되면 전 포스팅 보는걸 추천
-inside outside 설정도 필수!











이것이 2번으로 NAT하는 방법이다.
공인IP가 하나이므로
ip nat inside source list [숫자] interface [interface] 
-아까 access-list 에 지정한 숫자를 넣어주고 interface는 공인ip로 나가는 선에 대해 지정해주면 된다.
-여기서는 outside가 0/1 이더넷이다.
-inside outside 설정도 해주어야 한다.





각 컴퓨터로 외부인 8.8.8.8에 ping을 보내고 난 후
show ip nat traslations 명령어를 입력하면 변환된 내용이 나온다.
모두 선점하는 방식은 Dynamic NAT와 다르게 없었으며, 8.8.8.1이라는 똑같은 공인 IP에서 포트번호만 다르게 통신하는 것을 알 수 있다.
이게 요즘 우리가 쓰는 공유기의 NAT 방법이다.


+ Recent posts