블로그 > ◈ 쭌 날다 ◈ http://blog.naver.com/uliel7719/17866891 | |||||||||||||||||||||||||||
1. The three-way TCP handshake
# netstat -an LISTEN 서버의 데몬이 떠서 접속 요청을 기다리는 상태 (서버 애플리케이션에서 수동적 열기로 연결 요청을 기다리고 있는 상태) SYN-SENT 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태 (원격 호스트에 능동적인 개설 요청(능동적 열기)) SYN_RECEIVED 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태 (네트워크 통한 연결요청 받음(수동적 열기)) ESTABLISHED 3 Way-Handshaking 이 완료된 후 서로 연결된 상태 FIN-WAIT1 능동적 닫기(active close) 요청을 한 상태 CLOSE-WAIT 수동적 닫기를 하고 있는 상태로 FIN 종결 세그먼트를 수신하고 이에 대한 확인 메시지를 전송한 상태 FIN-WAIT2 로컬에서 종결(FIN)세그먼트를 전송하였고 원격 시스템에서 이에 대한 확인메시지를 수신하였지만 원격 애플리케이션이 작업을 종료하지 않아 원격 호스트 의 종결 세그먼트를 기다리는 상태 LAST_ACK FIN 종결 요청을 받고 로컬에서도 회선 종결에 합의하여 종결을 요청(FIN)한 상태로 이에 대한 확인 메시지가 수신되면 회선이 종결됨 TIME-WAIT 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태 CLOSING 로컬 TCP는 FIN_WAIT_1에서 설명한대로 FIN 종결 세그먼트를 전송하였고, LAST_ACK에서 설명한대로 원격 시스템의 종결 세그먼트도 수신하였지만 FIN_WAIT_1 단계에서 전송한 세그먼트에 대한 확인 메시지(ACK)를 수신하지 못한 상태로 보통 확인 메시지가 전송 도중 분실되었다는 것을 나타냄. (흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태) UNKOWN 소켓의 상태에 대해서 확인이 안되는 경우 CLOSED 완전히 종료, 회선 종결.
|
'netstat'에 해당되는 글 2건
- 2006.08.11 Netstat 로 살펴본 TCP 상태 Trouble Shooting
- 2006.08.07 [PC보안] Netstat 명령어로 점검
Command 모드에서 netstat를 사용하여 PC내의 악성 코드 여부를 확인할 수도 있다.
1. [시작버튼] > [실행]을 눌러서 cmd 라고 입력하여 Command 창을 띄운다.
<참고: CTRL+R 을 누르면 [실행]창이 바로 뜬다.>
<또 참고: Windows 98에서는 cmd 가 아니라 command 라고 해야 command 창이 나온다.>
2. netstat -an
이 명령어를 치면 아래 그림과 같은 메시지가 출력된다.
앞에 보이는 IP주소(Local Address)는 로컬시스템(내 PC)의 IP주소이며 뒤의 IP주소(Foreign Address)는 나와 네트워크로 연결이 이루어진 시스템의 IP주소이다. (IP뒤의 ":숫자" 들은 포트 번호이다.)netstat 명령어는 현재 시스템과 네트워크로 연결이 이루어진 상태를 보여주는 명령어다.
자, 이제 분석 방법이다!(FPORT 블로그에서는 존댓말을 썼었는데 왜 갑자기 반말쓰냐고 욕하지는 마세요;)
먼저 위 메시지의 맨 끝 필드인 State 필드를 보자. ESTABLISHED는 연결되어있는 상태를 말하며 CLOSED는 이미 연결이 끊어졌음을 말한다. LISTENING은 현재 시스템에서 열려있는 포트를 말한다.
일단 LISTENING 이라고 되어있는 놈들은 본다. IP주소는 0.0.0.0으로 된 놈들이 많고 내 IP주소 몇개 안될것이다.
<참고: 0.0.0.0(네트워크 IP) - 이놈을 인식하지 못하면 인터넷을 못한다.>
<또 참고: 127.0.0.1(LocalHost IP) - 이놈은 자기를 스스로 가리킬때 사용하는 주소이다.>
Local Address 필드의 IP는 중요하지 않다. 어차피 거기는 내 컴퓨터의 정보만 나오니까. 중요한것은 LISTENING으로 되어있는, 다시말하면 "열려있는 포트"번호이다.
내 컴퓨터에 몇번 포트들이 열려있는지 살펴본 후에, 만일 그 포트로 접속한 놈이 있다면 90%는 뭔가 이상한 거라고 생각하면 된다.
예를 들어,
0.0.0.0:445 0.0.0.0:0 LISTENING
. . .
. . .
. . .
150.2.50.14:445 68.235.32.153:4461 ESTABLISHED
이렇게 보였다고 하자, 445 번 포트(0.0.0.0:445)가 현재 열려(LISTENING)있음을 알 수 있고,
아래에는 내 445번 포트로(150.2.50.14:445) 웬 68.235.32.153 이라는 놈이 접속(ESTABLISHED)했다는 것이 확 드러났다.
일반 개인 컴퓨터 이므로 누가 내 컴퓨터로 들어올일은 거의 없다! (P2P로 내 컴퓨터의 폴더가 공유되어 있다면 몰라도..)
아무튼 이런식으로 분석을 하면 되겠다.
그 외의 것들은 죄다 내가 상대방 컴퓨터로 접속한것을 나타내는 것이기 때문에 무시해도 된다. 물론, Reverse 해킹 방식이 있기는 하지만, 그걸 개인 컴퓨터에 적용할 정도로 무식한 크래커는 없을것이다.
내용출처 : [직접 서술] 직접 서술(출처 : '[PC보안] Netstat 명령어로 점검' - 네이버 지식iN)