2016. 1. 15. 09:05 :: 네트워크 보안

0. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

1. TCP, UDP 관련 공격

가. ack 스톰

나. 세션 하이재킹

다. syn 플루딩(DoS 공격)

라. flooding(tcp, udp)

마. port scan

 

2. TCP, UDP 가짜 세그먼트 만들기 : 포트 스캔

가. 참조 : c:\windows\system32\drivers\etc\services

나. 실습

1) victim : win7(VM), attacker : kali

가) UDP

 # hping3 -2 [victim_ip] -p 53

② # hping3 -2 [victim_ip] -p 139

 

③ 와이어샤크 확인

- 검정색으로 표시된 것은 ICMP 오류 메시지이다.

 

④ 해당 포트가 서비스 중이 아니라는 ICMP 패킷으로 오류 메시지가 온다.

- type 3, code 3 의 오류 메시지

 

# hping3 -2 [victim_ip] -p 137   [netbios 에서 이미 서비스중]

- 이미 서비스 중이기 때문에 서비스 중이 아니라는 오류 응답(type 3, code 3)이 오지 않는다.

 

나) TCP

# hping3 [victim_ip] -p 80 -S

# hping3 [victim_ip] -p 139 -S

 

③ 와이어샤크 확인

 

80포트에 SYN 패킷을 보내면 서비스 중이 아니므로 종료 시키는 RST 패킷으로 응답이 온다.

139포트는 서비스 중이기 때문에 SYN+ACK가 오지만 자신의 서비스가 아니기 때문에 RST 을 더 보내 종료 시킨다.

 

2) NMAP

가) -sS : 스텔스, 3-way 에서 마지막 ack를 보내지 않아서 로그가 안남는다.

나) -sN : flag에 아무것도 넣지 않아(null)서 RST 응답을 받고 판단

다) -sF : FIN 패킷만 보낸다.

라) -sX : flag를 여러개 같이 보낸다.

마) -sI : Idle, 좀비를 시켜서 해당 좀비의 ID를 모니터링해서 서비스가 열려있는지가 확인

(정확하기에는 좀비가 다른 통신이 없어야 정확함)

바) 대상이 정해져있지않는 경우 -iR 옵션(랜덤타겟)으로 사용

사) 스캔

- # nmap -sn 192.168.221.0/24

- # nmap -sS [vintim_ip]    =>    TCP

- # nmap -sU [vintim_ip]    =>    UDP

 

3. DoS(Denial of Service) : 서비스 거부 공격

 

4. DDoS : DoS에서 한단계 업그레이드 된 공격, 여러 대의 좀비 PC를 이용하여 공격하는 것이 특징이다.

 

5. DRDoS

 

6. MITM(Man In The Middle)

가. 중간자 공격

나. Sniffing : 도청, 훔쳐보기

다. Spoofing : 속이기

1) ARP spoofing

2) IP spoofing

가) Land attack, tcp syn flooding, smurf, icmp redirect

3) DNS spoofing

라. DNS MITM

1) DNS(도메인 이름 서비스)

가) PC -> DNS 서버 : 재귀 쿼리

나) DNS 서버 -> PC : 반복 쿼리

다) 패킷 확인

cmd> nslookup www.naver.com        =>    명령어 입력 

 

② 패킷 확인 

 

③ Query

- 53번 포트

- 요청이 여러개이기 때문에 Transaction ID 부여

- 맨 아래 내가 요청한 도메인 이름이 보인다

 

④ Response 

- 맨 아래 answers 부분에 내가 요청한 것의 응답이 들어있다.

 

2) DNS spoofing

가) 사용툴 : dnsspoof, arpspoof, fragrouter

- 공격자(kali)

# arpspoof -t [victim_ip] [gateway]

# fragrouter -B1

# cd /tmp

# cat > hosts       => 내용 작성, 가짜 사이트 2개

192.168.1.6            www.naver.com 

192.168.221.130      www.google.com

[Ctrl + d]

# ls hosts

# cat hosts

# dnsspoof -f /tmp/hosts

- victim(VMwin7)

# dns 서버 주소를 외부로 한다. (168.128.63.1)

# 웹사이트 접속

 

나) 공격

① kali에서 가짜 사이트 만들기

# service apache2 start 

# ps -ef | grep apache

② arp 스푸핑과 포워딩

# arpspoof -t 192.168.221.135 192.168.221.2

# fragrouter -B1 

 

③ dns 스푸핑

# dnsspoof -f /tmp/hosts

- 처음에 실행하면 포트를 열고 기다린다.

 

- victim 에서 웹사이트로 naver, google에 접속 시도 

- 위에서 작성한 가짜 사이트로 접속된다. 

- 공격자가 dns 응답을 대신 해주고 있다.

 

④ 패킷 확인 

- 소스 주소는 외부 정상적인 dns 주소로 보이지만 MAC 주소를 보면 공격자의 주소이다.

 

 

posted by Red_Seek
2016. 1. 14. 09:09 :: 네트워크 보안

0. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

1. ICMP

가. 에러를 알려주거나 정보를 알려준다.

나. 헤더 구조

1) type 이 3, 4, 5, 11 은 에러를 알려주는 경우이다.

2) type 2

가) 목적지에 도착하지 못했다는 내용이 대표적이며 세부적인 이유를 code 필드에서 알려준다.

나) code

3) type 5

가) 라우팅 테이블 조작시에 사용 가능

4) type 11

가) TTL 값을 확인하고 1을 감소 시켜준다. 만약 TTL 0 이 되면 해당 패킷을 버리고 code 0 으로 여기까지 핑이 왔다 라고 되돌려준다. 되돌려줄때 버린 패킷을 다시 넣어서 보내준다.(ICMP의 data 필드에 다시 넣어서 보내줌) 

- type 11, code 0 이면 TTL 0 이여서 보내진 ICMP 패킷이다.

- ICMP 의 data 필드에 받았던 ICMP 패킷이 다시 넣어져있는것을 확인할 수 있다.

 

나) tracerout 명령이 type 11을 이용 

 

5) ping 명령

가) ICMP type 8, code 0

 

6) tracert(traceroute) 명령

가) ICMP type 7 (TTL = 1 부터 1씩 증가)

- type 11 : 에러, 이 메시지의 src ip를 화면에 출력

- type 0 : 마지막 목적지 도착

 

다. ICMP를 이용한 공격

1) SMURF, ICMP flooding, ping of death, ICMP redirect

2) ICMP 외에도 가능한 공격

- 은닉채널 : 사용하지 않는 필드에 데이터를 숨겨서 전속, tos 필드 및 ping 의 데이터 부분

- land attack

3) 대부분이 IP spoofing 공격을 함께 이용(공격자 자신을 숨기기 위해)

 

라. SMURF 공격

1) ICMP ping (echo), IP spoofing 해서 src 주소를 속임

2) 브로드캐스트 이용, local 및 remote 공격 가능

3) 공격 방법

가) 공격자가 ICMP echo request 의 src 주소를 victim 주소로 조작

나) dst 주소에는 호스트가 많은(큰) 네트워크에 브로드캐스트 주소 사용

다) 많은 호스트들은 ICMP echo requst 를 수신하여 echo reply 를 보내게됨 즉, victim에게 간다.

라) victim 은 많은 echo reply 를 수신하여 해당 패킷들을 drop 시키기 위해 많은 자원을 사용

- 트래픽을 발생시키는 DoS 공격중 하나

4) 공격

가) # hping3 -1 [브로드캐스트 주소] -a [victim_ip]

① # hping3 -1 192.168.221.255 -a 192.168.221.135 -c 1 

 

나) 와이어샤크 확인 

- 현재 네트워크의 규모가 vm 환경으로 작기 때문에 하나밖에 발생하지 않았다.

 

① echo requst 

- src addr 이 kali의 주소 .130 이 아니라 victim의 VMwin7의 주소가 적혀있음을 확인 가능하다.

- dst addr 에는 브로드캐스트 주소가 적혀있다.

 

② echo reply 

- 현재 VM 내부에는 공격자 kali, victim win7, 게이트웨이(.2) 밖에 없어서 게이트웨이가 응답한 reply 하나만 확인가능

- src addr은 게이트웨이 주소이다. (192.168.221.2)

- dst addr 을 보면 실제 icmp 를 보낸 kali의 주소가 아니라 victim 의 주소가 적혀있다.

 

마. Ping of Death

1) ping 하나로 죽음에 이르게 하는 공격

2) 하나의 패킷의 size 를 크게하여 전송

3) 하나의 패킷을 전송하지만 victim은 많은 단편화 패킷을 수신함으로 부하를 가중시킨다.

4) victim 혹은 목적지에서 다시 합쳐진다.(중간 라우터 노드에서는 합쳐지지 않는다.)

5) 네트워크 환경에 따른 MTU size

가) ethernet : 1500 byte

나) tokenring(16M) : 17915 byte

다) tokenring(4M) : 4464 byte

라) FDDI : 4352 byte

마) IEEE 802.3 + 802.2 : 1492 byte

6) 공격

가) # hping3 -1 [victim_addr] -d 65000

# hping3 -1 192.168.221.135 -d 65000 -c 1

- 단편화된 패킷들이 전송되는 것을 확인가능

- 마지막에는 ICMP 패킷으로 끝남

(위 2개 사진 맨왼쪽에 번호를 보면 1 ~ 44 개의 단편화 패킷이 전송됬을음 확인할 수 있다.)

 

나) # hping3 -1 [victim_addr] -d 65000 -a 100.100.100.100

① # hping3 -1 192.168.221.135 -d 65000 -a 100.100.100.100 -c 1

- 송신자를 100.100.100.100 로 속여서 패킷 전송

- 마찬가지로 마지막에는 ICMP 패킷으로 끝남

 

다) hping3의 옵션을 이용하여 부하를 일으키는 방법

-i u10000 (1초에 10개 패킷전송) 또는 --fast

-i u1000  (1초에 100개 패킷전송) 또는 --faster

-i u100   (1초에 1000개 패킷전송)

--flood : 공격자 시스템이 공격가능한한 최대한 많은 트래픽 발생

# hping3 -1 192.168.221.135 -d 65000 -a 100.100.100.100 --flood

공격전의 victim 의 성능

 

- 공격 후 victim의 성능

 

- 공격 중지

 

바. Land Attack

1) 알고리즘 오류에 의한 공격 (자신의 꼬리를 잡기 위해 제자리 걸음하는것)

2) 최근에는 해당 공격 되지 않음 (OS가 drop 시킴)

3) 많은 패킷을 유발하는 목적으로만 사용

4) src와 dst 의 각종 정보를 동일시켜 보냄

가) IP : src ip == dst ip

나) 서비스 : src port == dst port

5) ICMP 이외에도 IP 가 포함되는 모든 프로토콜, tcp, udp 도 가능

6) IP spoofing과 같이 사용

7) 공격

가) # hping3 -1 [victim_addr] -a [victim_addr]

# hping3 -1 192.168.221.135 -a 192.168.221.135

[[[[사진 추가]]]]

② requst 패킷만 있다. reply 패킷은 OS가 버리기 때문이다.

 

사. 은닉채널(ICMP)

1) 환경 구축

가) ish : ICMP 패킷으로 데이터를 주고받는 통신을 한다.

나) 백도어로 쉘을 가져와서 공격자가 각종 명령어를 실행할 수 있다.

다) centOS_VM(서버, victim)

- # yum install gcc* : 컴파일러 설치

- ish 설치 (ish : 클라이언트용, ishd : 서버용)

라) kali_VM(클라이언트, 공격자)

- ish 설치 (ish : 클라이언트용, ishd : 서버용)

2) 서버 측

- # ./ishd

- # ps -ef | grep ishd    =>    동작 확인

3) 클라이언트 측

- # ./ish [server_IP]

- 쉘을 가져와서 내마음대로 조작 가능

4) 와이어샤크 확인

가) 클라이언트가 서버에 접속하여 각종 명령어 실행하며 패킷을 확인

나) ICMP 패킷의 data 필드 확인

다) 원래는 의미 없는 값이 가야하지만 ish 통신을 하면 의미있는 값들이 전송되어짐을 확인 가능

5) 대책

가) 지금의 경우는 reply 패킷만 사용하기 때문에 requst 없는 경우를 탐지

나) 반대로 requst만 사용하는 방법도 있음

다) 은닉채널은 모니터링을 잘해야한다.

- TCP, ICMP 패킷의 필드를 사용하기 때문에 찾기 어렵다.

 

 

posted by Red_Seek
2016. 1. 13. 09:04 :: 네트워크 보안

0. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

1. ARP

가. 헤더 구조

1) 하드웨어 타입 : 이더넷 환경

2) 프로토콜 타입 : IP

3) 하드웨어 주소 길이 : MAC, 48비트, 6바이트

4) 프로토콜 주소 길이 : IP, 32비트, 4바이트

5) 내부에만 전달되는 패킷, ARP 헤더에 이더넥 패킷이 불어서 내부를 다님

6) L2 이더넷, L3 IP 사용

7) 요청할때에는 요청자의 MAC주소, IP주소와 알고싶은 사람의 IP주소가 들어가고 Target 하드웨어 주소에는 0으로 채워서 보낸다.

- 요청 : opcode 1

- 응답 : opcode 2

 

나. 패킷 확인

1) VMwin7에서 arp table을 초기화 시킨다.(arp 패킷을 보기 위해)

- cmd> arp -d    (관리자 권한 필요) 

2) cmd> arp -a 명령으로 arp table 이 없어진것을 확인

3) VMwin7에서 # ping 192.168.221.130 명령으로 kali에게 핑을 날리고 arp 패킷을 발생시킨다. 

 

4) 위 사진에서 첫번째 arp 패킷은 .130 의 MAC 주소를 요청하는 requst 패킷이다. 

- 보내는 정보는 VMwin7의 IP, MAC 정보가 정확하게 들어있다.

- 알고자하는 target의 정보는 IP는 알기 때문에 채워져있고, MAC은 모르기 때문에 0으로 채워서 보낸다.

 

5) 두번째 arp 패킷은 응답을 받는 reply 패킷이다. 

- reply는 위에서 핑을 받은 .130 kali가 응답을 해준다.

- 모든 정보가 채워져있다.

 

6) VMwin7은 reply를 받을때 arp table에 작성한다. (arp -a) 

- reply 패킷의 target 이 나일때에만 table을 작성

 

7) ARP reply 를 바꿔서 보내면 가짜 정보로 바꿀 수 있다.

가) opcode 2

나) target 은 VMwin7(IP, MAC)

다) sender 정보는 공격자의 정보

 

다. ARP 스푸핑

1) VMwin7에게 kali가 게이트웨이라고 속이는 경우(가로채기)

가) VMwin7에 arp table 192.168.221.2 의 MAC 주소를 kali의 주소로 바꿔야함

나) VMwin7의 게이트웨이 주소 확인 

- 게이트웨이 : 192.168.221.2

 

다) kali는 가짜 arp reply를 보내야한다.

라) # arpspoof -t [victim_ip] [속이고자하는 항목의 IP(게이트웨이)]

- # arpspoof -t 192.168.221.135 192.168.221.2

마) 공격전의 VMwin7의 arp table 

 

바) 공격후의 VMwin7의 arp table

① # arpspoof -t 192.168.221.135 192.168.221.2  

- 해당 명령을 계속 진행시켜야 적용된다.

 

② VMwin7 의 arp table 

- 게이트웨이와 kali(공격자)의 MAC 주소가 같아진다.

 

사) 공격이 진행중일때의 패킷을 확인 

- reply 패킷만 계속 보내게 된다.

- 패킷 내용의 sender 부분을 보면 IP는 게이트웨이, MAC 은 kali의 정보를 보내고 있다.

 

아) arp 스푸핑 이후 VMwin7에서 게이트웨이로 통신이 안된다. 

- 공격자(kali)가 포워딩을 해주어야 victim(VMwin7)은 정상적으로 통신이 된다.

 

자) kali 에서 # fragrouter -B1 명령 입력

차) 와이어샤크로 패킷을 확인한다. 

- requst 패킷이 2개씩 발생한다.

- 하나는 victim이 kali에 보내는 것

- 다른 하나는 kali가 victim에 받은 것을 victim 인것처럼 게이트웨이에게 전해주는 것

① 첫 번째 requst 패킷 (VMwin7 -> kali)

② 두 번째 requst 패킷 (kali -> 게이트웨이)

- reply 패킷은 게이트웨이가 kali의 패킷을 정상적으로 victim에게서 온 내용으로 속아서 응답을 victim에게 해주는 패킷이다.

(현재 게이트웨이는 속이지 않았기 때문에 공격자를 걸치지 않고 바로 VMwin7(victim) 에게 보낸다.)

 

2) 도청하기(가로채기에 이어서 진행)

가) arp 스푸핑과 kali에서 포워딩 진행중

나) 암호화 되지 않는 서버의 계정을 만들어 로그인을 해야하는 환경을 만든다.(로그인 유도)

다) VMwin7 에서 웹페이지 접속하여 로그인 시도 

 

라) 와이어샤크 확인

① ID, password 를 입력하고 전송하기 때문에 클라이언트가 서버에게 가는것을 확인해야한다.

② 와이어샤크 필터

ip.src == 192.168.221.135 && ip.dst == 192.168.1.11 && http

- 오류없이 입력하면 초록색으로 표시

http.authorization : 해당 필드를 아는경우 바로 검색 가능(urlencoded-form.value)

- 패킷 확인 

- 로그인 했던 ID, password를 도청할 수 있다.

 

3) 방어 방법

가) MAC table을 정적으로 설정해준다.

① # arp -s 명령으로 정적 설정

② netsh 명령 이용

cmd> netsh interface ip show interface : 등록한 인터페이스 이름 확인

cmd> netsh interface ipv4 add neighbors "로컬 ~~~" [ip주소] [mac주소]

cmd> netsh inetface ipv4 show neighbors "로컬 ~~~"

③ 단점

- 단말의 전원을 껐다가 키면 다시 설정해주어야한다.

- 관리 호스트의 개수가 많으면 힘들다.

 

나) 기타 방법

① 스위치 장비를 통해 정책을 뿌려준다.

② L3 sw arp snoop 기능 활성화

③ L2 sw port-security 사용

④ Network IDS, IPS 로 트래픽 모니터링

⑤ IP/MAC 정보를 모니터링 하는 프로그램 이용

⑥ 윈도우 실행 -> mmc : 위 명령 등을 부팅시 자동으로 실행되도록 설정 가능

posted by Red_Seek
2016. 1. 12. 08:59 :: 네트워크 보안

0. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

1. TCP/IP 취약점(공격, 분류)

가. 공격

1) Sniffing : 훔쳐보기, 도청

가) tools :  wireshark, tcpdump, cain&abel 등

나) Passive Attack, 수동적 공격

다) 도청의 인터페이스라면 wireshark 에 설정이 아래와 같이 되어있어야 한다.

- 체크되어 있으면 자신에게 오는 패킷 이외에도 들어오는 모든 것을 볼 수 있다.

2) Spoofing : 속이다

가) IP 스푸핑 : src ip 주소를 속임 (내부, 외부 공격 가능)

나) ARP 스푸핑 : src mac 주소를 속임 (내부 공격)

다) DNS 스푸핑 : DNS에 해당하는 ip 및 도메인이름을 속임 (내부, 외부 공격 가능)

 

2. Ethernet

가. 토큰링의 단점을 보완하기 위해 나옴

나. 동시에 여려명이 통신하기 위해 만든것

다. CSMA/CD

라. 최근에는 스위치 사용

마. MAC 주소 사용(IP 주소로 MAC 주소를 알아오는 것이 ARP)

바. 정상 패킷 확인(ethernet / icmp)

1) 와이어샤크에서 vmnet8 로 설정 (VM 상의 패킷을 보기 위해) 

 

2) kali 에서 win7으로 핑을 보내고 패킷을 확인한다. 

 

사. 비정상 패킷 확인

1) kali에서 # macof 명령어 실행

가) 해당 명령은 MAC Table의 용량을 초과시켜 스위치를 더미허브 처럼 행동하게 만들어 스위치의 기능을 무력화시킴

나) 랜덤의 IP, MAC 정보를 보낸다. 

 

3. IP

가. 헤더구조

1) TOS : QOS, 사이렌 울리듯이 패킷에 마킹을 한다. 지금은 많이 사용안함

- 은닉채널 : 사용하지 않는 필드에 원하는 데이터를 숨겨서 보내는 것도 가능

2) 전체길이 : 단편화 복구하기 위해 데이터의 길이를 파악하기 위해 사용

3) ID : 패킷마다 고유번호 부여

4) IP flag

가. M : 도착해서 단편화 여부에 사용

- 1 : 같은 id의 뒤에 단편화 더 있음

- 0 : 뒤에 더 없거나 끝

나. D : 라우터들이 본다. 단편화하지 말라는 여부

- 1 : 단편화하지 말라(단편화 못한, 라우터가 버린다.)

- 0 : 단편화해도 된다.

- 최근에는 대부분 0으로 한다, 1이면 라우터가 버리기 때문이다.

5) TTL : 패킷의 수명, 라우터를 지날때마다 확인한다.

- OS 마다 기본값이 다르다

- 루핑 방지용

6) Protocol : 상위 프로토콜의 정보

 

나. 패킷 

 hello... [데이터] 32 byte

 8 byte

 IP 헤더 20 byte

     : Total Len 60 byte

<-------------------------------->

40 byte                     ICMP헤더

 

 

 

 

다. 단편화 확인

1) 이더넷 환경 MTU = 1500 byte(IP헤더 포함)

- IP 헤더 20 byte 제외하면 1480 byte 씩 단편화해야한다.

2) win7 에서 kali 로 3000 byte 핑을 보냄 

 

3) 와이어샤크에서 확인 

 

4) 패킷 정보

가) 첫 번째 패킷 : 1480 + 20 = 1500 [0 ~ 1479]

나) 두 번째 패킷 : 1480 + 20 = 1500 [1480 ~ 2959]

다) 세 번째 패킷 : 3008 - 2960 = 48 / 48 + 20 = 68 [2960 ~ 3007]

- 8 byte 는 ICMP 헤더 이다.

라) 실제 데이터는 총 3000 byte 이니까 나누면 1480 + 1480 + 40 이다.

 

라. 공격종류

1) bonk, boink, treadrop

가) 조립을 제대로 할 수 없게 만드는 공격(DoS 중 하나)

나) payload를 10씩 전달한다는 가장(한번에 전송되는 데이터 크기가 10이라는 의미)

- 정상       : 0 10 20 30 40 50 60 ...

- bonk      : 0 10 20 30 30 30 30 ...

- boink     : 0 10 20 30 20 30 20 ...

- treadrop : 0 10 25 37 42 ...

0-9 10-19 25-34 37-46 42-51 (부족 혹은 겹쳐서 전송)

다) 윈도우 업데이트 되면서 해당 공격은 되지 않고, 시스템이 해당 패킷을 자동으로 drop 시킨다.

 

마. 가짜 IP 생성

1) win7 에서 방화벽 종료

2) kali 에서 # hping3 명령어 사용

3) src ip 를 속임

가) # hping3 -1 192.168.221.135 -a 192.168.221.200 -c 1 

- 와이어샤크로 확인 결과 보내는 IP(Source) 가 kali의 주소인 .130 이 아니라 .200 으로 나온다.

- 핑을 받은 win7은 MAC 주소를 보지 않고 IP만 보고 reply를 보내야하는데 .200 에 대한 MAC을 확인하기 위해 arp table을 본다.

- arp table에 .200 정보가 없기 때문에 위 사진처럼 arp requset 를 보내지만 응답을 받지 못한다.

나) 가상 win7에서 받은 패킷의 정보를 보면 src MAC은 kali, src IP 는 공격자가 조작한 .200 으로 나온다. 

 

4) src IP 를 물리 PC 주소 조작

가) # hping3 -1 192.168.221.135 -a 192.168.221.1 -c 1

나) win7 에서 받은 패킷에는 kali의 MAC 주소, 물리 PC 인터페이스 192.168.221.1 (VMnet8) 주소로 나옴 

 

다) 가상의 win7은 보낸사람의 주소로 reply를 보내지만 물리 PC는 자신이 보냈던것이 없기 때문에 reply에 대한 응답을 보내지 않음

 

라) VMwin7은 192.168.221.1의 물리 주소를 모르기 때문에 MAC 주소를 arp로 확인 후 보낸다.

① 물리 PC의 인터페이스 

 

② VMwin7이 192.168.221.1 로 응답한 패킷 내용 

- 이더넷 헤더의 목적지 MAC 주소를 보면 물리 PC의 MAC 주소가 들어있음을 확인할 수 있다.

 

5) src IP를 외부 주소로 조작

가) # hping3 -1 192.168.221.135 -a 100.100.100.100 -c 1

나) win7 에서 받은 패킷에는 kali의 MAC 주소, 100.100.100.100 주소로 나옴 

- 이더넷 헤더의 src 를 보면 kali의 MAC 주소이고, IP 헤더의 src은 조작된 100.100.100.100 을 받는다.

 

다) VMwin7은 보낸사람의 정확한 정보를 확인할 수 없으니 100.100.100.100 에게 응답을 한다. 

 

① VMwin7의 라우팅 테이블에는 100.100.100.100 정보가 없으니까 외부 네트워크(디폴트 게이트웨이 0.0.0.0)로 보낸다. 

 

② VMwin7에서 reply 하는 패킷에 IP헤더의 목적지는 100.100.100.100 이고 이더넷 헤더의 목적지 MAC 주소에는 게이트웨이의 MAC 주소가 들어가게 된다. 

 

③ VMwin7의 ARP table 

- 192.168.221.2 가 게이트웨이 이다.

- 192.168.221.1 은 물리PC의 VMnet8 의 주소이다.(물리PC의 주소)

 

 

 

 

posted by Red_Seek
2016. 1. 11. 09:12 :: 네트워크 보안

1. VMware

가. 네트워크 종류 

1) 현재는 NAT

가) VM win7

나)  vmnet(NAT) 사설망에서 물리망에 나올때 주소를 변경해준다.

192.168.221.135(vm) -> 192.168.1.123(물리 데스크탑) -> 61.33.69.xxx (공인망)

다)  물리 데스크탑에서 ipconfig 로 확인을 하면 아래와 같이 VMnet1, 8 번이 있다.

라)  물리적 PC와 가상 PC를 연결해주기 위해 존재

마)  VMnet8 이 NAT 이다.

 

2) Host-Only

가) VM 내부끼리 통신하는 개념이다.

나) VMnet1 사용

다) host-only 에서 게이트웨이(.2)가 추가되어서 외부와 통신이 되는 것이 NAT 이다.

 

3) Bridges

가) VM 내부가 아니라 물리 데스크탑의 주소로 사용가능하다.

나) 물리적인 망이랑 연결된다.

 

2. 해킹 과정

가. Foot Printing

1) 대상을 찾는 것

2) 도메인 사이트(whois 등) 등에서 관련 정보를 취득 가능

- 등록자, 이메일, 주소 등

3) cmd> nslookup 명령 사용

3) google 검색

나. Sanning

1) Live scan : 해당 호스트가 켜져있는지 꺼져있는지 확인

2) OS scan

3) Port scan : 열려있는 서비스 확인

다. Enmeration 목록화 : 정보를 목록화

라. Gaining Access

1) 암호 도청

2) 파일 취득

3) DoS

마.  Escalting Privilege

1) 권한 상승

2) 버퍼오버플로어 등의 악성코드

- 명령어 실행 후 메모리 반납 과정에서 메모리를 읽어와서 정보를 가져오는 방법

바. Pilfering

1) 백도어

2) ps, ls 등의 명령어 사용시 자신이 심어둔 악성코드가 보이지 않도록 코드 수정

사. Covering Track : 흔적 제거

 

3. 실습 환경

가. kali

- IP : 192.168.221.130

- MAC :  00-0c-29-9a-be-c1

나. VM_win7

- IP : 192.168.221.135

- MAC :  00-0C-29-C7-7A-39

 

4. 방화벽 설정

가. 기본 값

나. VMwin7 에서 kali로의 핑은 정상, kali에서 VMwin7으로의 핑은 되지 않는다.

1) ICMP requst 패킷을 허용시켜야 한다.

2) 설정 방법

① 제어판 -> Windows 방화벽 -> 왼쪽에 '고급 설정' 

 

② 왼쪽에서 '인바운드 규칙' 선택 -> 오른쪽에 '새 규칙...' 선택 

- '사용자 지정' 선택 후 다음

 

③ ICMP 패킷의 설정이므로 '모든 프로그램' 선택 후 다음

④ 프로토콜 종류에서 'ICMPv4' 선택 

 

⑤ ICMPv4 선택 후 아래의 '사용자 지정' 클릭 

 

⑥ '특정 ICMP 종류' 선택 후 아래의 '다음 ICMP 종류' 설정 후 추가 : 종류 (8), 코드 (0) 

 

⑦ IP 설정에서는 별도 설정 없으므로 다음 

 

⑧ ICMP 패킷을 허용해주는 것이 목적이므로 '연결 허용' 선택 

 

⑨ 적용되는 시기는 별도 지정이 필요하면 설정, 아니면 그냥 다음

⑩ 마지막은 해당 규칙의 이름과 설명 작성 

 

⑪ 설정 완료 후 아래의 그림과 같이 규칙이 되어있는지 확인 

 

⑫ 설정 완료 후에 kali 환경에서 VMwin7 으로 핑 전송 시 정상적으로 동작된다.

⑬ 이와 같은 방법으로 규칙을 추가하면 방화벽 전체를 끄지 않고도 원하는 패킷만 설정이 가능하다.

⑭ 아웃 바운드를 설정하지 않는 이유는 기본값에서 '허용'하고 있기 때문이다.

 

 

posted by Red_Seek
2015. 12. 11. 18:47 :: 네트워크 보안

1장. 네트워크 기초

 

1. OSI 7 계층

 - 표준화된 네트워크 구조를 제시한 기본 모델

 - 실제 인터넷에서 사용되는 TCP/IP는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화된 현실화의 과정에서 채택된 모형

 

 

 

1) 물리 계층

- 비트, 네트워크의 두 노드를 물리적으로 연결

- 네트워크 장비 : 허브, 리피터

- 전송매체 : UTP, STP, 동축, 광

- 인터넷이 원하는 속도가 나오지 않으면 카테고리, 랜카드, 서비스 확인

2) 데이터링크 계층

- 프레임, MAC주소 이용하여 정확한 장치로 정보 전달

- 네트워크 장비 : 브리지, 스위치, L2

- MAC : 48비트, 전세계적으로 유일, 물리주소

- 앞24비트OUI(제조사코드), 뒤24비트NIC

3) 네트워크 계층

- 패킷, 라우터가 경로를 결정하는 일(라우팅)
- 네트워크 장비 : 라우터, L3 스위치

4) 전송 계층

- 세그먼트(TCP), 데이터그램(UDP)
- 종단 간의 투명한 데이터 전송을 양방향으로 행함
- 오류 복구, 흐름 제어
- 네트워크 장비 : L4 스위치

5) 세션 계층

- 데이터, 접속을 관리하는 역할
- 포트, 서비스 주소

6) 표현 계층

- 데이터, 네트워크로 보내질 데이터의 형식을 결정
- 압축, 인코딩, 암호화

7) 응용 계층

- 데이터, 사용자 인터페이스 역할, 서비스를 네트워크에 접속시키는 역할, 여러가지 서비스 제공

 

2. TCP/IP 계층

 - DOD : 미 국방성

 

3. 네트워크 장비

1)  리피터(신호증폭기)

- LAN영역에서 다른 LAN영역을 서로 연결하기 위한 목적으로 사용
- 신호 증폭시에 잡음 동반

2) 허브

- 패킷을 연결된 모든 호스트에 보냄

- 1차선, CSMA/CD 방식
- 더미허브
- 리피터의 잡음을 처리하기 위해 나옴
- 충돌도메인 = 1, 브로드캐스트 도메인 = 1

3) 브리지

- 네트워크 세그먼트를 2개 이상으로 나누어서 관리하기 위한 장비

4) 스위치

- 지정된 호스트에게만 보냄
- 칩셋방식(고속화), 비CPU기반으로 동작, 저렴
- MAC주소를 이용하여 어느 세그먼트로 패킷을 보내야할지 결정 가능
- 맥 테이블을 만들어 기능 수행(캐쉬에 저장되어 휘발성)
- 충돌도메인 = 4, 브로드캐스트 도메인 = 1

5) 라우터

- 서로 다른 네트워크를 연결해주는 장비

- CPU기반으로 동작
- 라우팅 테이블은 관리자가 직접 만듬

- 충돌도메인 = 4, 브로드캐스트 도메인 = 4

  


 

2장. TCP/IP 기본

 

1. MAC 주소

- 랜카드의 고유넘버를 의미, 물리적 주소

- 컴퓨터가 네트워크 상에서 서로를 구분해서 인직하기 위해 필요

- ARP : IP 주소로 MAC 주소를 찾음

- RARP : MAC 주소로 IP 주소를 찾음

- 48비트, 전세계에서 유일한 주소

- 앞 24비트 : OUI, 제조사 코드

- 뒤 24비트 : NIC, 시리얼 넘버

 

2. IP 주소

- 논리적 주소체계

- 32비트

 2^7

 2^6

 2^5

 2^4

 2^3

 2^2

 2^1

 2^0

 128

 64

 32

 16

 8

 4

 2

 1

- IP 주소 = 네트워크 ID + Host ID

- 네트워크 ID, Host ID 구분은 서브넷마스크로 구분

- IP 주소 Class (Class 주소체계를 사용하는 것을 Classful)

1) A Class

- 0 ~ 127

- 실제 1~1266까지 사용가능

- 0 (ALL, ANY), 127 (LOCALHOST, Loopback) 으로 사용되어 제외

- 사설 : 10.0.0.0 ~ 10.255.255.255

- 기본 서브넷 마스크 : 255.0.0.0

2) B Class

- 128 ~ 191

- 사설 : 172.16.0.0 ~ 172.31.255.255

- 기본 서브넷 마스크 : 255.255.0.0

3) C Class

- 192 ~ 223

- 사설 : 192.168.0.0 ~ 192.168.255.255

- 기본 서브넷 마스크 : 255.255.255.0

4) D Class

- 224 ~ 239

- EIGRP : 224.0.0.10

- OSPF : 224.0.0.5 ~ 6

- RIPv2 : 224.0.0.9

5) E Class

- 240 ~ 255

 

3. 서브넷팅

- Classful한 주소를 나누는 것

- 네트워크 개수가 조건일 경우 : 좌 -> 우 이동하여 계산

- 호스트 개수가 조건 : 우 -> 좌 이동하여 계산

 

4. CIDR

- 부족한 IP 주소를 해결하기 위해 새로운 주소 지정시스템

- 기존 Class 개념 무시(Classless)

 

5. VLSM

- IP를 효율적으로 할당하기 위한 방법

- 서브넷팅한 네트워크를 다시 서브넷팅 하는것

 

6. 클라이언트/서버 모델

- 클라이언트 : 서비스를 요청하는 프로세스

- 서버 : 요청을 처리하고 결과를 반환하는 프로세스

 

7. 포트

- 서비스 주소

 MAC

 IP

 Port

 기기주소

 논리주소

 서비스주소

- 특정 프로세스를 인식하기 위한 방법

- 서비스마다 사용되는 포트 다름

- Well Known Port : 0 ~ 1023

- 대표적인 포트 번호 

 TCP 20, 21

 FTP

 TCP 22

 SSH (보안기능)

 TCP 23

 Telnet (보안기능 없음)

 TCP 80

 HTTP

 TCP 443

 HTTPS

 UDP 53

 DNS

- TCP 80, 443, UDP 53 : 네트워크 3총사(?)

 

8. 전송방식

- 유니캐스트 : 하나의 송신자가 다른 하나의 수신자로 데이터를 전송하는 방식 (1:1)

- 브로드캐스트 : 하나의 송신자가 같은 서브네트워크 상의 모든 수신자에게 데이터를 전속하는 방식 (1:전체)

- 멀티캐스트 : 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게 데이터를 전송하는 방식 (1:N, N:N)

 


 

3장 TCP/IP 프로토콜

 

1. 이더넷(Ethernet)

- CSMA/CD 사용

- IEEE 802.3

- 데이터링크 계층의 기능을 LLC와 MAC 2개의 부계층으로 구분한다.

1) 상위계층 : LLC(네트워크 소프트웨어와 하드웨어인 하위 계층과 통신을 다룸), NIC을 동작시키는 드라이버 소프트웨어

2) 하위계층 : MAC(데이터링크 계층의 하위 이더넷부 계층)

- 이더넷, IEEE 802.3 헤더 

1) Preamble, SOF : 전송과 수신장치 동기화를 위해 사용

2) DMAC : 수신측 MAC 주소

3) SMAC : 송신측 MAC 주소

4) 길이/유형 : 데이터 필드의 길이

5) 데이터

6) FCS : 프레임에서 에러를 찾기 위해 사용, CRC 사용

 

2. CSMA/CD

- PC or Server 가 네트워크상에 통신이 일어나는지 확인, Carrier Sense

- 동시에 네트워크상에 데이터를 보내는 경우, Multiple Access

- 두 개 이상의 노드가 데이터 전송시 부딪치는 경우, Collision Detection

- 충돌 발생하면 데이터 전송했던 노드는 랜덤한 시간 동안 기다린 다음 다시 전송한다.

- CSMA/CA

 

3. ARP

- 논리적인 IP주소를 데이터링크 계층의 물리적인 MAC 주소로 바꾸어주는 주소 해석 프로토콜

- MAC Table은 캐쉬에 저장 

 

4. RARP

- MAC 주소로 IP 주소를 가져오는 것을 의미

 

5. GARP

- 같은 네트워크에서 IP 주소가 중복되는지 확인, 다른 장치들에게 자신의 IP주소를 갱신하도록 주기적으로 IP주소를 알려주는 역할

 

6. IP

 

1) 버전 : 주소의 버전(IPv4)

2) IHL : 옵션값을 제외한 길이, 헤더의 길이

3) TOS : 서비스의 품질을 나타냄, QOS

4) Total Len : 데이터를 포함한 전체 길이

5) ID : 식별자, 단편화된 IP 패킷을 재조립할 때 사요ㅗㅇ

6) IP플래그

- x : 미사용, 항상 0

- D : Don't frag, 0(단편화 가능), 1(단편화 불가능)

- M : More frag, 0(마지막 조각을 의미), 1(뒤에 더 올것이 있음을 의미)

7) Fragmentation Offset : 순서 번호, 몇번까지 받았다를 의미

ex) 3080

0 - 1479

1480 - 2959

2960 - 3079

- ID, IP플래그, FragOffset 이 3개는 재배열과 관련된 필드

8) TTL : OS마다 값이 다름, 패킷의 수명, 라우터 지날때마다 소모

9) protocol : 프로토콜의 종류 알려줌

- 1 : ICMP

- 2 : IGMP

- 4 : IP

- 6 : TCP

- 17 : UDP

- ....

10) 체크섬 : 헤더에 대한 오류검출을 한다.

11) SIP : 송신측 IP주소

12) DIP : 수신측 IP주소

 

7. ICMP

 

- 목적 : IP는 목적지에 대한 확인을 하지 않는다. 보증하기 위해 사용

- 정상 종작의 예

1) 8번이 가면 0번이 응답해야함 / 둘다 코드는 0 이어야함

- traceroute (tracert)

1) 경로 추적

2) windows 환경에서는 # pathping [ip] 가 유용

3) TTL 값을 1부터 증가 시키면서 응답을 받고 다시 TTL값을 1씩 증가 시키며 목적지 보내여 경로를 확인하는 방식

 

8. IGMP

- IP 멀티캐스트 그룹에서 호스트 맴버를 관리하는 프로토콜

- 유로 TV, 인터넷 방송 은 특정 그룹 관리하는 방식으로 운용

 

9. TCP

- 신뢰할 수 있고, 연결 지향의 전달 서비스

- 세그먼트 단위로 전송

- 특징

1) 신뢰성, 전이중 방식, 연결지향, 바이트스트림, 흐름제어, 세션관리

2) 핸드쉐이킹

- 헤더 구조

1) SP : 송신측 포트번호, 4계층에서 사용

2) DP : 수신측 포트번호

3) 시퀀스 넘버 : 자신이 전송하는 데이터의 고유번호, 순서제어를 하기 때문에 신뢰성

4) ACK 넘버 : 송신측으로부터 받은 데이터의 응답번호(받은 순차번호 1을 더해서 보낸다)

5) Offset(헤더길이) : 헤더의 길이

6) Reserved(예약)

7) TCP 플래그

- C, E안씀

- U : 응급, 긴급 시 사용

- A : 확인 응답 번호

- P : 넣다. 보내고 있다

- R : 강제 종료, 비 정상종료

- S : TCP 연결을 위한 요청

- F : 정상 종료, 더이상 보낼 데이터 없음

- 종료할때에는 4번의 패킷을 주고 받음 : 4-way 핸드쉐이킹

8) Window : 윈도우 크기, 수신자 입장에서 자신의 가용 버퍼의 크기

9) 체크섬 : 오류 검출

10) Urgent Pointer : TCP 플래그의 URG 플래그가 설정되어있을 경우 사용

11) 옵션

- MSS(Maximum Segment Size)

① 목적지에서 수신가능한 최대 크기이다.

② MSS = MTU - TCP/IP헤더크기(40)

- MTU(Maximum Transmission Unit)

① 네트워크 인터페이스에서 세그먼트 없이 보낼수 있는 최대 데이터그램 크기 값

② 일반적으로 1500바이트

③ MTU = MSS + TCP/IP헤더크기

- TCP 연결 및 종료 과정

1) 연결 시 3-way, 종료 시 4-way

2) 연결 상태 변화

- Closed : 소켓을 사용하지 않은 상태

- Listen : 소켓 접속 대기 상태, 연결 기다림, 열려있음

- SYN SENT : 소켓 접속을 시도

- SYN RECVD : 접속 초기화 중

- ESTABLIESHED : 접속 상태, 연결됨

- FIN WAIT-1 : 접속 종료 중

- FIN WAIT-2 : 접속 종료 후 원격측으로부터 닫기 지시 대기중

- Closeing : 소켓을 종료되었으나 모든 데이터가 도착하지 않음

- TIME WAIT : 소켓은 종료되었으며 원격지로부터 닫기 지시가 재전송되기를 기다리는 상태, 클라측에서 연결 끊음

- CLOSE WAIT : 원격측이 닫혔으므로 소켓이 종료되는 것을 기다림

- LAST ACK : 원격측이 닫히고 소켓도 종료되고 있음, ACK기다림

 


 

4장. 서비스 프로토콜

 

1. DNS 서비스

- 도메인 이름을 IP주소로 매핑해주는 서비스

- # nslookup

- DNS 질의 과정

1) www.naver.com

2) 클라이언트에서 로컬DNS에게 물어본다.

3) 로컬DNS는 root에게 물어본다.

4) 다음은 com이름서버에 물어본다.

5) 다음은 naver이름서버에 물어본다.

6) 다 물어보고 받은 IP주소를 로컬DNS에서 클라이언트에게 알려준다.

7) 클라이언트는 받은 IP를 가지고 접속한다.

 

2. DHCP 서비스

- 호스트 IP 구성관리를 단순화하는 IP표준

- UDP 67, 68 사용

- 동작 과정

1) 발견(DISCOVER)단계 : DHCP서버를 찾아 IP요청을 위해 발견패킷 뿌림

2) 제안(OFFER)단계 : 발견패킷을 받은 서버는 임대가능 IP주소를 제안

3) 요청(REQUEST)단계 : IP제안받은 클라이언트는 가장 먼저 받은 서버에게 해당 주소에 대한 요청을 보냄, 다른 서버에게는 안보냄

4) 응답(ACK)단계 : 요청패킷을 받은 서버는 응답패킷을 발송하여 IP주소를 임대한다.

- DHCP 서버로 임대 받을때 DNS, NTP 같이 받음

- BOOTP

 

3. SNMP 서비스

- 네트워크 관리 프로토콜

- UDP 161 사용

- 시스템이나 네트워크 관리자로 하여금 원격으로 네트워크 장비를 모니터링하고 환경설정 등의 운영을 할 수 있게 한다.

- 구성 요소

1) MIB

2) 관리시스템(Manager)

3) 관리대상(Agent)

 

4. Telnet 서비스

- 클라이언트가 서버에 연결/구동된 것처럼 상호작용하도록 하는 서비스

- 할 수 있는것

1) 피요한 유닉스 명령어

2) 네트워크 사용

3) 각종 CGI 프로그램 사용

- # telnet [ip] [portnum]

- 전부 평문으로 보인다. 보안에 취약

- SSH는 암호화 되어 보인다.

 

5. FTP 서비스

- 파일을 업로드하고 다운로드 할 수 있도록 해주는 프로토콜

- 파일 교환

- 평문으로 보이는 단점

- 명령어와 응답이 오가는 Conmmand Port : 21

- 실제 데이터가 오가는 Data Port : 20

- Avtive Mode

1) 클라이언트에서 서버의 21번 포트로 접속 후 클라이언트가 사용할 두번째 포트를 서버에 알려준다.

2) 서버는 21번 포트에서 클라이언트에게 ACK로 응답

3) 서버의 20번 포트는 클라이언트가 알려준 두번째 포트로 접속을 시도한다.

4) 클라이언트의 두번째 포트에서 ACK로 응답

- Passive Mode

1) 클라이언트에서 서버의 21번 포트로 접속, 두번째 포트 질의

2) 서버는 21번 포트에서 서버가 사용할 두번째 포트를 알려준다.

3) 클라이언트는 새로운 포트는 열고 서버가 알려준 두번째 포트로 접속을 시도한다.

4) 서버의 두번째 포트(20아님, 1024이상의 새로운 포트)에서 ACK로 응답

- 공격 유형

1) bounce attack : 익명의 FTP서버를 이용해 경유해서 호스트를 스캔한다.

2) TFTP : UDP통신, 인증절차를 요구하지 않는다.

3) Anonymous FTP 공격 : 특정 디렉토리에 권한을 걸어서 아무나 접근 못하게 대책가능

4) 스니핑 : 평문으로 보이기 때문에 위험

5) Brute force : 무작위 대입법 공격

 

6. MAIL 프로토콜

- SMTP : 메일을 주고 받기 위한 프로토콜

- 포트번호 25 사용

- # telnet [ip] [25]   =>   접속   =>   SMTP 세부 명령으로 메일 전송 가능

- MIME : 단순 텍스트를 넘어 이미지, 오디오, 비디오, 어플, 멀티 파트 전송 가능

- POP3 : TCP 110, 메일 서버에서 메일 다운로드, 서버에서 해당 메일 지움, 오프라인에서도 볼 수 있음

- IMAP, IMAP3 : POP와 달리 메일을 받아도 서버에 원본 남아 있음, 서버에 계속 접속 필요

 

 

 

 

참고서적 : 원리를 중심으로 한 네트워크 개론 (INTEK)

posted by Red_Seek