본문 바로가기
잡동사니

네트워크 해킹 기초

by L3m0n S0ju 2021. 11. 5.

 

 

Packet Sniffing and Spoofing

 

허브 -> 브로드캐스트를 통해 패킷 전송

스위치 -> 브로드캐스트 사용 X

 

 

 

 

 

 

 

 

 

 

Passive Sniffing Trough a Hub

 

NIC을 promiscuous mode로 동작 후 모든 패킷 정보를 모은다. 만약 패스워드 정보가 평문으로 돌아다닌다면 와이어샤크 같은 캡쳐 도구를 이용해 확인할 수 있다.

 

 

 

 

 

Active Sniffing Trough a Switch

 

 

ARP Spoofing

 

거짓의 ARP 정보로 가장하여 같은 네트워크 PC들의 ARP 캐시를 오염시킨다.

 

 

 

 

Sniffing Defense

 

Use secure protocols -> ssl, ssh 등

가능하면 Static ARB table 사용

 

 

 

 

 

IP Address Spoofing

 

거짓의 IP 정보로 가장한다.

 

 

 

 

 


TCP 3-way Handshake Protocol

TCP는 처음 연결할 때 세번의 대화를 나눈 후 세션이 유지된다. 첫 번째로 SYN Packet은 서버에게 동기화를 요청하는 패킷이다. 두 번째 패킷은 서버가 SYN 패킷에 응답하여 seq 번호와 다음에 받을 seq 번호를 예상하여 ACK에 넣어서 패킷을 보낸다. 마지막으로 클라이언트는 서버로부터 받은 패킷에 대한 응답으로 seq를 x+1로 설정하고 ACK에 다음에 서버가 보낼 seq 넘버를 예상해서 보낸다.

 

 

TCP는 이러한 연결 요청을 저장하기위해 TCB라는 공간을 사용하는데 해당 공간이 꽉 차도록 하여 더 이상 요청을 받지 못하도록 하는 공격들이 있다.

 

 

 

 

 

 


SYN Flooding Attack

TCP queue의 공간이 없도록 SYN 패킷을 무작위로 보내는 공격

 

 

 

 

위 명령어로 희생자 PC에서 syn을 받아들일 수 있는 큐의 최대 크기를 알 수 있다. 결과를 확인하면 큐의 크기가 128임을 알 수 있다.

 

 

 

 

 

현재 리눅스 환경은 tcp_syncookies이 기본값으로 1이 설정되어있는데 tcp_syncookies 1인 경우 syn_flooding 공격은 통하지 않는다. 그 이유는 syncookies 기능을 키게 되면 서버는 SYN Backlog가 꽉 찼을 경우 SYN 패킷에 있는 정보들을 이용해 syncookies라는 것을 만들고 해당 값을 SYN+ACK 형태의 ISN(Initial Sequence Nimber)로 만들어서 클라이언트에게 다시 보냅니다. 따라서 큐가 꽉차면 쿠키 값을 만들어서 서비스를 제공하기 때문에 속도가 조금 느려지는 단점이 있더라도 SYN Flooding 공격을 막을 수 있습니다.

 

 

 

 

 

syncookies 값이 1인 경우 netstat –na로 네트워크 연결 상태를 확인하면 SYN_Flooding의 흔적은 보이지 않습니다.

 

 

 

 

 

 

이번에는 syncookies 값을 0으로 설정하고 실험을 진행하겠습니다.

 

 

 

 

 

 

희생자 PC에서 netstat 명령어를 입력하면 위 그림과 같이 SYN_RECV 상태인 연결들이 랜덤으로 형성된 외부 IP와 세션이 만들어진 것을 확인할 수 있습니다.

 

 

 

 

 

공격을 진행하면 위와 같이 희생자 서버에 텔넷 접속이 안된다.

 

 

 

 

 

 

SYN Flooding Attack 대응방안

 

SYN Cookies

 

SYN 패킷이 들어오면 서버의 비밀 키를 이용해 패킷 정보를 해시값으로 만들어 SYN Cookie를 만든다. 쿠키 정보를 이용해 클라이언트와 연결을 유지하므로 TCB queue에 연결 정보를 저장하지 않는다.

 

 

 

 

 

 

 

 


TCP 4-way Handshake 연결 종료

 

4번의 패킷 교환으로 세션을 종료한다.

 

 

TCP Reset Attack

공격자가 A와 B의 통신을 방해하는 공격이다. ssh 통신에서도 IP 계층에서는 TCP 패킷이 암호화되어 스니핑이나 스푸핑이 불가능하지만 TCP 계층에서 TCP 헤더는 암호화가 되어 있지 않기 때문에 패킷이 RST 패킷이면 ssh 통신에서도 공격이 먹힌다.

 

 

 

 

 

서버 ip 10.64.133.229로 텔넷으로 접속하면 정상적으로 로그인할 수 있다. 하지만 TCP Reset Attack을 통해 공격자가 서버와 클라이언트의 연결을 의도적으로 방해할 수 있다. 공격자가 서버의 ip를 가장하여 클라이언트에게 RST 패킷을 보내면 클라이언트가 RST 패킷을 받는 즉시 세션이 끊어진다.

 

 

 

 

 

 

TCT Reset Attack의 공격은 위와 같이 netwox 78을 이용해 실험을 진행하였다.

 

 

 

 

 

 

위 그림은 희생자 클라이언트의 화면이다. 정상적으로 연결된 텔넷이 foreign host에 의해서 종료되었다는 문구가 출력되고 다시 연결하려고 해도 바로 종료되는 것을 확인할 수 있다.

 

 

 

 

 

 


TCP Session Hijacking

클라이언트 패킷 정보를 똑같이 위조하여 서버에게 가짜 패킷을 보낸다.

 

 

 

이번 Task에서도 서버와 클라이언트의 텔넷 연결이 유지된 상태에서 진행한다.

 

 

 

 

 

 

위 그림은 공격자 PC에서 와이어샤크로 희생자 서버와 희생자 클라이언트의 통신 내용을 스니핑한 TCP 패킷의 스트림이다. 위 그림과 같이 클라이언트가 처음에는 id=see, pw=dee로 입력 후 로그인에 실패하고 두 번째 시도에서 id=seed, pw=dees로 로그인에 성공한 것을 알 수 있다. 텔넷 통신은 위와 같이 아이디와 패스워드가 평문으로 드러나기 때문에 안전한 통신이 아니다.

 

아래 패킷은 클라이언트에서 서버로 보낸 패킷 하나를 와이어샤크에서 캡쳐한 것이다. 아래 패킷을 netwox 40을 통해 해당 해킷을 시각화하겠다.

Internet Protocol Version 4, Src: 10.64.128.73, Dst: 10.64.133.229
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x10 (DSCP: Unknown, ECN: Not-ECT)
    Total Length: 52
    Identification: 0xec7f (60543)
    Flags: 0x02 (Don't Fragment)
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (6)
    Header checksum: 0x3386 [validation disabled]
    [Header checksum status: Unverified]
    Source: 10.64.128.73
    Destination: 10.64.133.229
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]
Transmission Control Protocol, Src Port: 50264, Dst Port: 23, Seq: 3266437694, Ack: 543634032, Len: 0
    Source Port: 50264
    Destination Port: 23
    [Stream index: 0]
    [TCP Segment Len: 0]
    Sequence number: 3266437694
    Acknowledgment number: 543634032
    Header Length: 32 bytes
    Flags: 0x010 (ACK)
    Window size value: 229
    [Calculated window size: 29312]
    [Window size scaling factor: 128]
    Checksum: 0xbf55 [unverified]
    [Checksum Status: Unverified]
    Urgent pointer: 0
    Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
    [SEQ/ACK analysis]

 

 

 

 

 

 

패킷을 netwox 40으로 시각화하면 위와 같이 패킷의 구조를 구성할 수 있다. 이와 같이 만약 A와 B가 통신을 하는 경우 공격자는 중간에서 패킷을 가로채 A로 위장한 후 B에 접근하여 TCP Session Hijacking을 통해 인증을 우회할 수 있습니다.

 

netwox 40 -c 16 -e 60543 -g -j 64 -l 10.64.128.73 -m 10.64.133.229 -o 50264 -p 23 -q 3266437694 -r 543634032 -z -E 229

댓글