OS/Windows

윈도우 네트워크 연결 정보

realforce111 2016. 6. 28. 10:48

현재 피해 시스템 네트워크 정보, 서비스를 열고 있는 응용프로그램 정보, 서비스에 연결되어 있는 세션 정보 등은 공격자의 흔적을 추적할 수 있는 중요한 역할을 합니다. 네트워크 연결 정보는 네트워크 연결이 끊어지고 나면 사라지기 때문에 가장 시급히 수집해야 하는 정보중 하나입니다. 외부 장비든 내부 애플리케이션이든 또 다른 네트워크 연결 기록을 얻었다면 그것은 반드시 라이브 리스폰스에서 수집한 연결정보와 비교해 봐야 하며 차이가 있다면 시스템에 루트킷이 설치되어 있을 가능성이 높다는 것을 의미합니다. 


네트워크 인터페이스 정보

네트워크 인터페이스 정보로는 기본적으로 IP, MAC 주소, 게이트웨이, DNS 정보가 있으며, 이들 정보는 라우팅 테이블과 연계되어 네트워크 트래픽이 어떤 식으로 외부로 전송되는지 밝히는데 기여합니다. ipconfig.exe는 NIC와 그들의 상태에 대한 정보를 보기 위해 조사자가 사용할 수 있는 윈도우즈 시스템에 속해있는 유틸리티입니다.


ipconfig /all은 시스템에서 NIC의 네트워크 구성을 보기 위해 사용합니다. 이 정보에는 NIC 상태, DHCP가 사용 가능한지, NIC의 IP 주소 등이 포함됩니다. 검사를 위한 네트워크 트래픽 로그를 가지고 있거나 시스템의 IP 주소가 어떤 시점에서 변경되었을 수도 있기 때문에 이러한 정보들이 조사에 있어서 매우 유용합니다.


윈도우즈 시스템에서 네트워크 연결과 관련된 정보를 수집하는데 가장 잘 알려진 도구는 netstat입니다. 이것은 TCP 및 사용자 데이터그램 프로토콜(UDP) 연결, 그들의 상태, 네트워크 트래픽 통계 등을 간단히 보여줍니다.


*netstat 옵션

-a : 사용하는 옵션은 모든 연결 정보를 보기 위한 옵션
-n : 호스트를 IP 형식으로 표시
-b : 실행 파일의 이름만 알려줄 뿐 전체 경로는 표시하지 않으므로 나중에 얻게 되는 프로세스 목록에서 PID를 일일이 비교해야 하는 번거로움이 있어 라이브 리스폰스 용으로는 부적절
-o : 네트워크와 관련된 프로세스의 PID를 출력

-r : 라우팅 테이블과 시스템 상에서 활성화된 경로를 보여줌(route print 와 같은 효과)


*상태 표시

Listening : 현재 서비스 대기 상태
Established : 다른 시스템과 서로 연결된 상태
Closed : 연결이 완전히 종결된 상태
Time-wait : 연결은 종료되었지만 소켓은 열어놓은 상태
Syn_sent : Syn 패킷을 발송한 상태


netstat에서 비정상적인 연결을 찾을 수 있습니다. 눈여겨보아야 할 부분은 로컬 컴퓨터에 열려있는 포트들과 접속한 외부 컴퓨터의 포트들, 그리고 외부와의 연결 계수입니다. 열린 포트를 보고 로컬 컴퓨터가 어떤 서비스 혹은 프로그램을 실행하고 있는지 알 수 있습니다.


로컬 컴퓨터가 접속한 리모트 컴퓨터의 포트를 보면 그 컴퓨터의 종류나 성격을 파악할 수 있습니다. 로컬 컴퓨터가 리모트 컴퓨터의 20, 21번 포트에 접속 중이라면 리모트 컴퓨터가 FTP 서비스를 운영하는 중이라는 뜻이고, 25번은 이메일(SMTP) 서비스, 80번은 HTTP 서비스를 의미합니다. 20, 21번 포트를 사용하는 FTP 서비스나, 25번 포트를 사용하는 SMTP 서비스도 간단히 설정만 변경해 주면 얼마든지 서비스 포트로 80번을 사용할 수 있으며, 이것은 해커나, 인터넷 웜에 의해서 자주 악용됩니다.


서버가 아님에도 불구하고 리모트 컴퓨터와 맺고 있는 연결이 비정상적으로 많다면 해킹을 의심하게 되는 중요한 단서가 됩니다. 일반 사용자 컴퓨터라면 프로그램을 모두 닫고 netstat -nao 명령을 실행하였을 때, 외부와의 연결이 30개 이상을 넘는다면 의심해 봐야 합니다. 서버라면 방화벽이나 IDS 시스템에서 초당 연결 횟수, IP, 포트별 연결 회수 등을 통계로 작성해 관리자에게 제공하기 때문에 정상적이 상황에서의 통계 값과 이를 비교해 비정상적인 연결을 찾아낼 수 있습니다. 이것은 네트워크의 행동을 기반으로 하는 가장 기본적인 침입 탐지 기법입니다.