강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

침해사고 분석 절차 가이드[2] - 침해사고 분석기술

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

제 3 장  침해사고 분석 기술


제1절 윈도우 사고분석

  최근 윈도우 서버나 개인 사용자 PC를 겨냥한 해킹뿐 아니라 웜, 바이러스, 봇을 통한 해킹사고 또한 급증하고 있어 관리자나 사용자들을 위한 윈도우 침해사고 분석 기술이 요구되고 있다.

  윈도우 사고분석에 있어 포렌식 측면에서 봤을 때 피해시스템에 영향을 주지 않고 필요한 정보를 얻어야 한다. 하지만 그렇게 하기 위해서는 전문적인 포렌식 기술과 도구들이 있어야 하므로 본 가이드에서는 라이브(live)에서 직접 피해시스템을 쉽고 빠르게 분석 할 수 있는 방법에 대해 알아보도록 한다.

1. 초기분석
  침해사고를 정확히 분석하기 위해서는 현재 구동중인 프로세스 정보나 네트워크 상태 정보 등 휘발성 증거를 수집해야 한다. 그리고 현재 피해시스템의 상황을 빠른 시간 안에 파악할 수 있는 방법이 필요하므로 윈도우 커맨드에서 실행되는 명령어들을 이용해 프로세스, 네트워크, 로그인 정보들을 수집해야 한다. 분석자는 이러한 정보들을 이용해 최대한 빨리 시스템의 변경내용이나 공격자의 흔적을 파악해야 한다.

  가. 시스템 시간 확인
  모든 시스템들이 시간을 동기화 시켜놓지 못하기 때문에 각 시스템별로 운영되는 고유의 시간이 있다. 이러한 시간이 파악되어야만 시스템 로그 시간을 연관 지어 확인 할 수 있다. 또한 공격자들은 관리자들의 분석에 혼란을 주기위해 시스템 시간을 변경해 놓는 경우가 있으므로 시스템 현재 시간을 확인해야 한다.

  ‘date’와‘time’은 cmd.exe 프로그램에 내장되어 있고 시스템 시간을 기록하는데 사용한다. 그리고 uptime은 시스템의 부팅 시간 정보를 보여주는 명령어로 사고 시간을 결정하는데 필요하기 때문에 중요한 정보이다. 도구는 'http://www.sysinternals.com'에서 무료로 다운받을 수 있다.



  나. 시스템 정보
  사고분석을 위해서는 피해시스템의 기본적인 정보가 필요하다. psinfo는 OS의 기본정보 및 보안 업데이트 정보 등을 제공하며 설치된 소프트웨어 정보 또한 알려준다. 이러한 보안 업데이트 정보는 시스템 취약점을 통해 어떻게 공격했는지에 대한 정보를 얻을 수 있기 때문에 최종 업데이트 날짜를 확인해야 한다.

  아래 그림은 psinfo 명령어를 통해 시스템의 정보를 확인한 화면이다.



  다. 프로세스 정보 확인
  대부분의 윈도우즈 시스템들은 많은 실행 프로세스들을 가지고 있다. 이러한 프로세스 중에는 공격자가 실행시켜놓은 악성프로그램이 실행되고 있거나 흔적이 남아 있을 수 있으니 자세히 확인해 볼 필요가 있다. 관심 있게 확인해 봐야 될 프로세스 정보는 다음과 같다.

  - 실행 프로세스명
  - 프로세스 실행파일 위치
  - 프로세스 커맨드 라인
  - 프로세스 실행시간
  - 프로세스가 참조중인 DLL 및 파일

  프로세스를 점검할 수 있는 도구로는 pslist가 있다. 이 도구는‘http://www.sysinternals.com’에서 다운 받을 수 있으며 현재 구동중인 프로세스 목록을 출력해준다. 옵션을 하지 않으면 프로세스가 실행된 시간을 자세히 확인할 수 있는데 이러한 시간은 또한 uptime에서 확인했던 부팅시간 이후에 악성프로그램이 언제 실행되었는지 확인 가능하다. -t 옵션을 사용하면 프로세스를 트리구조로 어떤 프로세스에서 실행되었는지 확인할 수
있다.


  위 명령어 실행결과에서 보면 백도어 프로그램인 rsmss가“winlogon-services”의 자식프로세스로 실행된 것을 확인할 수 있어 윈도우 서비스에 의해 실행된 것을 확인할 수 있다. at.job이라는 악성프로그램 같은 경우는 윈도우에서 흔히 보지 못한 프로그램이 실행되고 있어 어렵지 않게 찾아낼 수 있지만 정상 파일처럼 위장하여 악성프로그램을 실행하는 경우가 있으므로 실행파일 위치를 찾아서 정상 프로그램의 위치와 맞는지 확인해야 한다.

  또한 프로그램들이 사용하는 동적라이브러리 (DLL, Dynamic Link Libraries)정보를 수집해야 한다. 악성 프로그램은 시스템 DLL 뿐만 아니라 자체 제작한 DLL을 사용할 수도 있으므로 자세한 점검이 필요하다. listdlls은 모든 프로세스가 사용하고 있는 DLL 정보를 보여주고, 경로, 사이즈, 버전까지도 알 수 있다. 아래 그림은 정상적인 프로그램처럼 위장한 악성프로그램인 TaskDaemon.exe 프로그램을 listdlls로 확인한 화면이다. 이 악성프로그램은 자체 제작한 TaskDaemonRT.dll 등을 사용하는 것을 확인할 수 있다.


  또한 악성프로그램들은 자신들의 실행과 관련된 설정파일들이 있고 특히 악성 봇 프로그램 같은 경우 설정파일에 있는 서버에 접속을 하고 명령어들을 실행하기 때문에 자세한 조사가 필요하다. 프로세스들이 어떠한 파일들을 참조하고 있는지 확인할 수 있는 방법은 ‘http://www.sysinternals.com’에서 제공하는 handle 프로그램을 이용해서 확인할 수 있다.



  라. 네트워크 정보 확인
  현재 피해시스템 네트워크 정보, 서비스를 열고 있는 응용프로그램 정보, 서비스에 연결되어 있는 세션 정보 등은 공격자의 흔적을 추적 할 수 있는 중요한 역할을 한다.
  “netstat -an”명령어를 통해 프로토콜 상태, IP 기반 네트워크 연결 정보 등을 확인해서 현재 열려 있는 포트와 포트에 연결되어 있는 IP 정보를 확인해야 한다. 아래 명령어 수행결과에서 보면 시스템이 사용하지 않는 26103 포트가 LISTENING 상태로 열려 있는 것을 확인할 수 있다.



  이와 같은 26103포트에 telnet이나 nc로 접속하여 어떤 응용 어플리케이션이 구동중인지 확인해야 한다. 확인 결과 윈도우 command를 실행할 수 있게 해주는 백도어 포트임을아래 그림처럼 확인할 수 있었다.



  위의 26103 백도어 포트를 열고 있는 프로세스를 확인해야 하는데 fport 라는‘http://www.foundstone.com’에서 제공한 명령어를 사용하여 다음과 같이 확인할 수 있다.



  해킹 사고가 발생하면 네트워크 인터페이스 카드(NIC)가 promisc 모드로 동작중인지 확인해야 한다. 공격자는 스니핑 공격을 통해 시스템으로 송수신되는 모든 네트워크 트래픽을 모니터링 할 수 있는데 이 경우에 네트워크 인터페이스 카드가 promisc 모드로 동작하게 되므로 반드시 점검이 필요하다.



  마. 사용자/그룹 확인
  공격자에 의해 추가된 사용자나 그룹이 없는지 다음과 같은 명령어로 확인한다.



  바. 공유, 로그인 정보 확인
  시스템에서 제공되는“net”명령어를 사용해 현재 시스템에 공유된 정보, 현재 로그인되어 있는 사용자 정보를 확인해야 한다. 그리고 NBT(Net bios)에 연결된 정보가 있는지 nbtstat 명령어를 사용해 확인할 필요가 있다. 또한 시스템의 감사 정책이 설정되어 있다면 ‘http://www.foundstone.com’에서 제공하는 ntlast 명령어를 통해 로그인/로그오프에 대한 성공 실패 여부를 확인할 수 있다.



  사. 분석 스크립트
  앞서 설명한 프로그램들을 하나씩 실행해 분석 할 수도 있지만 초기분석을 효율적으로 수행하기 위해서는 휘발성 데이터를 빠르게 수집해서 분석해야 한다. 빠르게 수집하고 분석하기 위해서는 배치파일로 위의 명령어를 수행하고 결과는 파일로 저장해야 한다.





  아. 자동화 도구
  자동화된 스크립트의 사용 이외에도 윈도우 피해시스템 초기 분석을 위해 앞서 설명한 공개용 도구를 이용해 정보를 자동으로 수집해 주는 도구를 사용할 수 있다. 그중에서도 수집된 정보를 아래 그림처럼 브라우저로 확인할 수 있는 기능을 제공하는 WFT(Windows Forensic Toolchest) 사용을 추천한다. 사용방법은 다음과 같다.

  - 먼저 WFT와 분석에 필요한 명령어들을 다운받는다.
  - 명령어“wft.exe”를 실행한다.
  - 시스템에 따라 5분 정도 기다리면 index.html 파일이 생성된다.
  - index.html 파일을 열어 관련정보를 확인한다.
    ※ dd 명령어를 수행하다 프로그램이 끝나는 경우가 발생할 수 있으므로 관련 실행 부분을 wft.cfg 파일에서
        주석 처리해 준다. 또한 hfind, streams 명령어 수행시간이 상당히 길어질 수 있기 때문에 이 부분도 주석
        처리하길 권장한다.

  - 다운로드 : http://www.foolmoon.net/security/



  WFT 도구에서 사용한 명령어는 다음과 같다.



  - 기타 도구
  WFT외 공개된 자동화 도구는 다음과 같다.

  · Biatchux(F.I.R.E)
      http://biatchux.dmzs.com/

  · IRCR(Incident Response Collection Report)
      http://packetstormsecurity/Win/IRCR.zip


2. 루트킷 점검
  루트킷(RootKit)이란“시스템에탐지되지않도록하는코드, 프로그램의집합”,“ 시스템관리자 권한을 획득하기 위한 프로그램”이라 할 수 있다. 최근 윈도우 해킹동향은 공격에 성공한 후 시스템에 다운로드 된 악성프로그램(Bot, 백도어 등)파일 및 실행된 악성 네트워크, 프로세스 정보를 숨기기 위해 루트킷을 연동하고 있다.

  가. 루트킷 기능
  대부분의 루트킷은 사용자 모드와 커널 모드의 루트킷으로 구분할 수 있다. 사용자 모드는 파일 교체 즉 특정 프로세스에 사용한 DLL 파일들을 교체하거나 IAT(Import Address Table) 후킹, API 엔트리 패치 방법들을 사용해서 원하는 정보를 숨기는 루트킷들이다. 하지만 커널 모드 루트킷은 윈도우 운영체제 레벨인 윈도우 Native API(ntdll.dll, Kernel32.dll, User32.dll 등) 커널 드라이브와 Win32 응용프로그램 간의 데이터를 조작함
으로써 공격자의 흔적을 감춘다.

  이러한 루트킷들의 기능은 다음과 같다.

  - 프로세스/스레드 감추기
  - 프로세스 보안설정 변경 및 제거
  - 파일/폴더 감추기
  - 레지스트리/서비스 감추기
  - 네트워크 정보 감추기
  - 스니핑 및 시스템 제어

  현재까지 외부에 공개된 루트킷들은 다음과 같으며 최근 피해시스템에서 발견된 것들은 대부분 아래 루르킷들의 변종이라 볼 수 있다.



  나. 루트킷 탐지
  루트킷을 탐지하기 위한 방법으로 시스템에 설치되어 있는 안티바이러스 프로그램을 이용할 수도 있겠지만 커널 레벨 까지 검사를 하는 프로그램은 극히 드물다. 또한 루트킷은 악성 프로그램이나 공격자의 흔적을 숨기고 있으므로 이러한 숨겨진 정보를 통해 중요한 정보들을 찾아낼 수 있으므로 반드시 전문 프로그램을 활용해야 한다.

  아래 표는 루트킷 탐지 전문 프로그램의 기능을 분석한 표로써 분석자에게 적절한 프로그램을 찾아서 분석하면 된다.



  다. IceSword 도구를 사용한 탐지
  IceSword는 개인이 개발한 프리웨어 도구로 기능이나 사용자를 위한 인터페이스 측면에서 가장 쉽게 사용할 수 있게 구현되어 있다.

 * 다운로드 : http://www.blogcn.com/user17/pjf/index.html

  - 프로세스 검사
  아래 그림을 보면 실제 피해시스템에서 숨겨진 프로세스를 찾은 화면이다. 숨겨진 root.exe의 실행경로를 통해 악성프로그램들의 홈 디렉터리인“c:\winnt\at2.job\”을 확인할 수 있다. 이 디렉터리는 루트킷에 의해 숨겨져 있으므로 IceSword 도구의“File”을 통해 확인해야 한다.



  - 네트워크 점검
  다음 그림은 fport 명령어를 통해선 103번 포트의 백도어를 확인할 수 없지만 IceSword 네트워크 정보를 확인하면 루트킷에 숨겨진 백도어 포트를 확인할 수 있다.



  - 서비스 점검
  대부분의 커널 루트킷들은 서비스로 모듈을 로딩하게 되므로 루트킷을 실행하는 서비스를 숨기게 된다. 아래 그림은 루트킷에 의해 숨겨졌던 서비스를 검출한 화면이다. 이 서비스를 Disable로 하고 Stop으로 상태를 변경해서 시스템을 재부팅하면 루트킷이 실행되는 것을 막을 수 있다.



  - 숨겨진 레지스트리/파일 검사
  IceSword로 숨겨진 레지스트리를 찾을 경우 수동으로 점검해야 하는 불편함이 있으므로 루트킷에 의해 숨겨진 파일과 레지스트리를 자동으로 찾아서 검출해 주는“Anti-Rootkit” 도구로 확인할 수 있다.



3. 상세분석

  가. 레지스트리 분석
  윈도우 레지스트리는 시스템이 운영되는데 필요한 정보를 담고 있다. 설치된 소프트웨어 정보부터 환경설정, 임시 저장값까지 시스템에 거의 모든 정보를 담고 있으므로 사고분석에 있어 공격자의 중요한 흔적을 찾을 수 있다.

  - 시작 프로그램
  아래 레지스트리 목록은 윈도우 시작 시 자동으로 실행하는 프로그램을 등록하는 레지스트리들이다. 공격자들은 악성프로그램을 등록하여 시스템 재부팅 시 자동으로 실행되도록하므로 자세한 분석이 필요하다.



  윈도우 시작과 관련된 레지스트리 정보는 sysinternals에서 제공하는 Autoruns 프로그램을 통해 아래와 같이 확인할 수 있다.



  아래 레지스트리 키들은 디폴트로 %1%* 값을 갖는데 이들을“server.exe %1%*”로 변경할 경우 exe, com, bat, hta, pif 파일들의 실행 시 매번 server.exe 파일을 자동으로 실행되도록 할 수 있다.



  위와 같은 레지스트리들은‘http://www.diamondcs.com.au’에서 제공하는“Autostart Viewer”를 통해 확인할 수 있다.



  - 공격자가 남긴 레지스트리 정보 수집

  · 최근 사용한 문서 목록
    HKCU\Software\Microsft\windows\CurrentVersion\Explorer\Recentdocs
  · 터미널 서비스 접속 목록
    HKCU\Software\Microsft\Terminal server Client\Default
  · 설치된 소프트웨어 목록
    HKCU\Software\
  · 열어본 파일 목록
    HKCU\Software\Microsft\windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU

  나. 자동실행 점검

  - 서비스 점검
  공격자는 윈도우 서비스에 자신의 악성프로그램을 등록 시켜 시스템이 재부팅 되더라도 해당 서비스 (등록된 악성프로그램)을 자동으로 재시작할 수 있다. 이러한 방법은 대부분의 공격자들이나 악성프로그램들이 행하고 있는 유형이기 때문에 분석자는 반드시 서비스를 점검할 필요가 있다.
  악성 프로그램을 실행하는 서비스를 예상할 수 있는 방법은 다음과 같다.

  · 생소한 이름의 서비스
  · “Description”내용이 비어있는 서비스
  · “Description”내용이 영문인 서비스

  하지만 대부분의 공격자 프로그램이 정상적인 서비스 이름으로 가장하고 있기 때문에 찾기 쉽지는 않지만, 현재 시작된 서비스 항목이 어떤 것이며 실행파일 경로가 올바른지 확인해야 한다. 다음은 악성프로그램이 관리자가 혼동하도록 주로 사용하는 서비스명이며 실제 서비스명과 유사하다.

  · Backup System
  · Remote Administrator Service
  · System Spooler Host
  · Windows Management Drivers
  · Universal Serial Bus Control Components

  다음 그림은 공격자에 의해 등록된 서비스를 시스템에서 제공하는“관리도구-서비스”에서 확인한 화면이다.



  Autoruns는 현재 구동중인 서비스와 실행된 프로그램을 한눈에 확인할 수 있는 기능을 제공하며 아래 그림은“Services”탭을 실행해 백도어 관련 서비스를 확인한 화면이다. 아래 백도어 관련 서비스는 설명 부분이 비어 있어 쉽게 찾을 수 있다.



  - 스케쥴된 작업 확인
  시스템은 필요한 작업을 원하는 시간에 예약할 수 있는 기능이 존재 한다. 공격자들은 이러한 기능을 이용해 시스템이 재부팅 되더라도 악성 프로그램이 시작될 수 있도록 할 수 있으므로 점검이 필요하다.
  Autoruns의 Scheduled Tasks 기능을 통해 쉽게 확인할 수 있다.



  - 자동시작 폴더 점검
  윈도우의 재시작 시 이 폴더 안에 있는 모든 프로그램들은 자동으로 실행된다. 윈도우에서 이러한 자동 시작 폴더는 다음과 같다.

  · C:\Documents and Settings\Administrator\시작 메뉴\프로그램\시작프로그램
  · HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders

  Autoruns의 Logon 기능을 통해 쉽게 확인 가능하다.

  - Winlogon Notification DLL
  Winlogon Notification DLL은 NT 서비스에 비해 적은 코드만으로 구현이 가능하며 안전모드에서도 원하는 코드의 실행이 가능한 장점이 있다. Winlogon.exe에서 발생하는 이벤트 핸들러를 작성하여 Logon, Logoff, Startup, Shutdown, Startscreensaver, Stopscreensaver 등의 이벤트가 발생할 때마다 원하는 코드를 실행할 수가 있다. 관련 레지스트리는 다음과 같다.


  ※ Troj/Haxdoor-DI 악성프로그램 예
  arprmdg0.dll에 의해 삽입된 코드를 동작시키기 위해 아래 레지스트리가 생성된다.


  Autoruns의 Winlogon 기능을 통해 점검 할 수 있으며 설명부분이 비워져 있거나 생소한 이름의 dll이 실행되었는지 확인이 필요하다.



  다. 이벤트 로그분석
  공격자의 흔적 및 활동 정보를 찾아내기 위해서는 로그분석이 필요하다. 윈도우 시스템에서는 하드웨어, 소프트웨어 및 시스템 문제를 이벤트로그에 저장하므로 이벤트 뷰어를 통해 확인이 필요하다.

  · 관리도구 -> 이벤트 뷰어
  · 실행 -> eventvwr.msc



  하지만 공격자는 자신들의 흔적을 지우기 위해‘ClearEvent’같은 프로그램들을 이용해 이벤트 로그를 모두 삭제할 수도 있기 때문에 만약 어떠한 로그도 남아있지 않다면 공격자가 흔적을 지운 것으로 이해해야 한다.

  아래 표는 이벤트 점검 시 주의 깊게 살펴봐야 할 것들이다.



  라. MAC time 분석
  대부분의 파일시스템은 모든 디렉터리나 파일과 관련된 다음과 같은 시간 속성을 갖는다.

  - mtime : 파일을 생성 및 최근 수정한 시간
  - atime : 최근 파일을 읽거나 실행시킨 시간
  - ctime : 파일 속성이 변경된 시간

  이러한 시간 정보를 mac time 이라 하며 분석을 통해 공격자가 파일 시스템에서 어떠한 행동을 했는지에 대해 판단 할 수 있는 정보를 제공한다.

  · 해킹시점으로 mtime, atime 검색
  · 검출된 악성코드 mtime, atime 검색

  위와 같은 정보로 검색 후 시간대를 중심으로 정렬해서 시간 흐름에 따라 어떠한 파일이 생성, 수정, 실행됐는지를 분석해야 한다. mac time은 윈도우즈 기능 중“파일 및 폴더 찾기”기능을 통해 확인할 수 있고 점검 방법은 아래 그림과 같다.

  · 위치 : 시작-검색-파일 및 폴더-검색옵션-날짜



  해킹 발생 날짜를 기준으로“마지막 엑세스 파일”을 검사하게 되면 해킹 발생 후 실행됐던 파일들을 검색할 수 있다.

  아래 그림은 발견된 백도어파일 rsmss.exe의 mtime을 통해 윈도우-파일찾기 기능에서 그때 실행됐던 파일들을 조사한 결과 악성프로그램들을 찾을 수 있었다.



  마. 침입방법 분석
  공격자가 어떻게 시스템에 침입할 수 있었는지에 대한 분석 또한 피해시스템 분석에서 매우 중요하다. 관리자들은 이러한 해킹 원인분석을 하지 않고 사고에 따른 조치만 취하게 되면 이후에 또다시 같은 취약점으로 해킹을 당할 수 있기 때문에 원인 분석을 통해 반드시 패치를 수행해야 한다.

  윈도우즈 서버에서 해킹사고가 발생할 수 있는 경우는 크게 다음과 같이 분류할 수 있다.

  - 윈도우 취약점
    · 시스템 취약점 (보안 업데이트 미실시)
    · 패스워드 취약점
    · 잘못된 공유설정
  - 웹 어플리케이션 취약점
    · SQL Injection
    · 파일업로드 등
  - MS-SQL 취약점
    · 디폴트 패스워드 사용
    · 패치 미실시

  먼저 시스템에 어떤 어플리케이션이 운영 중인지 확인해야 한다. 하지만 대다수의 해킹사고는 시스템 보안 업데이트 미 실시로 인한 윈도우 취약점이나 웹 서비스 공격을 통해 발생한다.

  웹 서비스가 구동 중인 경우는 해킹 발생 시점에 발생한 로그 분석을 통해 공격 여부 및 방법을 대부분 확인할 수 있다.

  · IIS 로그 위치 : C:\WINNT\system32\LogFiles\W3SVC1

  윈도우 취약점의 경우는 최종 보안 업데이트 날짜를 파악 하는 게 중요하다. 최종 보안 업데이트 이후 발표됐던 취약점 중 리모트에서 공격 가능한 취약점이 있었는지 파악하고 관련 서비스가 오픈 되어 있는지 확인해야 한다.

  Microsoft에서 제공하는 Microsoft Baseline Security Analyzer를 이용하여 보안 패치상태, IIS, SQL 보안 상태를 점검할 수 있다.



  바. 인터넷 임시파일 분석
  인터넷 익스플로러를 통해 특정 사이트에 접속하게 되면 관련 사이트의 페이지는 임시파일에 저장되며 접속한 흔적이 히스토리에 남으며 또한 사용되었던 쿠키도 디스크에 저장한다. 이러한 임시파일들을 통해 공격자가 방문한 특정 사이트들을 확인할 수 있다.



  임시 인터넷 객체는 사용자가 인터넷을 사용하다 다운받은 ActiveX 프로그램들이 저장된 저장소이다. 임시 인터넷 파일은 사용자가 방문한 사이트 페이지들이 다운로드된 장소이며 열어본 페이지는 사용자가 접속했던 사이트 명들이 히스토리로 저장되어 있다.

  위와 같은 인터넷 임시파일들은 indexview를 통해 쉽게 확인할 수 있다. 이 프로그램은 Cookie, Internet 임시파일, History 3가지 형태로 보여준다.

  · 다운로드 : http://exits.ro/dwl/IndexView.exe



4. 해킹프로그램 분석

  가. 분석환경 구성
  분석을 위해서 최소 2개 이상의 서버를 가상으로 구동시키는 물리적 서버가 필요하다.

  - [서비스 제공] 가상서버
    · 가상 네트워크가 일반 네트워크처럼 동작할 수 있도록 Samba, HTTP, FTP 등의 서비스를 제공하는 가상서버를 하나 구축한다.
    · 해킹프로그램을 분석하다 보면 특정 URL에 접속한다든가 특정 주소로 메일을 보내고 특정 사이트의 IRC 봇에 접속하므로 서비스 구축이 필요하다.
    · 서버 OS를 리눅스로 구성하는 것은 테스트하는 악성프로그램에 의해 공격받거나 감염되는 것을 최소화 하기 위해서다.

  - [피해 대상] 가상서버
    · 해킹프로그램을 실행하는 서버를“피해대상”서버라 한다.
    · 해킹프로그램을 실행했을 때 시스템 파일과 레지스트리에서 발생하는 내용을 확인하기 위하여 모니터링 하는 프로그램이 설치되어야 한다.
    · 해킹프로그램 테스트 후 다시 이전 상태인 초기설정으로 복구할 수 있어야 한다.

    ※ Snapshot 기능 활용


  나. 분석 방법

    ① SysAnalyzer 도구 사용

    · 다운로드 : http://labs.idefense.com

  SysAnalyzer 도구는 악성코드가 시스템에서 구동되는 동안에 주어진 시간에 이후에 변경된 정보를 수집, 비교, 분석 보고해 주는 자동화된 툴이다. SysAnalyzer의 주된 임무는 지정된 시간에 걸쳐 시스템의 스냅샵을 비교하는 작업을 수행한다.

    · Delay : 스냅샵 전.후 사이의 값 지정
    · Sniff Hit : HTTP 접속 및 IRC접속 정보를 확인
    · Api Logger- 분석 바이너리에 인젝션 되는 DLL에서 호출되는 API 목록
    · Directory Watcher- 모니터링 시점에 생성되는 모든 파일 확인



  SysAnalyzer는 비교된 스냅샵을 통해 실행된 악성코드에 다음과 같은 정보를 얻을 수 있다.

    · 실행된 프로세스
    · 악성코드에 의해 오픈된 포트
    · explorer.exe나 Internet Explorer에서 로드된 DLL
    · 커널에 로드된 모듈
    · 변경/생성된 레지스트리 키



  다음은 해킹프로그램이 HTTP 사이트와 IRC Bot 채널에 접속한 정보를 Sniff_Hit 프로그램이 캡쳐한 화면이다.



    ② Malcode Analysis Pack

    · 다운로드 : http://labs.idefense.com

  Malcode Analysis Pack은 악성코드들을 조사하는데 유용한 도구들을 포함하고 있는 유틸리티이다.

  이 패키지가 포함한 유틸리티들은 다음과 같다.
    · ShellExt : 문자열 확인 기능 및 MD5로 암호화 기능 제공
    · socketTool : TCP 클라이언트 모니터링 프로그램
    · MailPot : 메일 서버 캡쳐 프로그램
    · fakeDNS : 악성프로그램이 접속하는 도메인을 다른 곳으로 유도하기 위해 사용하는 스푸핑 미니 DNS
                    서버 프로그램
    · Sniff_Hit : HTTP, IRC, DNS 스니퍼
    · sclog : 악성코드에서 사용하는 쉘코드 분석 도구
    · IDCDumpFix : 패킹 프로그램 언패킹 할 때 사용하는 보조 도구
    · Shellcode2Exe : 인코드된 쉘코드로 변환하는 php 스크립트 프로그램
    · GdiProcs : 숨겨진 프로세스 탐지에 사용

  - fakeDNS
  fakeDNS 프로그램은 VMware 환경의 외부 네트워크와의 통신을 차단하고 내부망을 통하여 악성 프로그램을 분석하는 환경에 매우 유용한 프로그램이다. 일부 IRC봇 프로그램은 dns 쿼리를 보내 접속이 되지 않는 경우 실행을 끝마치는 경우가 있는데 이럴 때 이 프로그램을 통해 [서비스제공] 가상 서버로 유인해서 실행할 수 있다. DNS 쿼리를 모두 자신의 127.0.0.1로 설정하거나 가상서버로 지정하여 트래픽을 유도 할 수 있다.



  - MailPot
  공격자는 해킹 후 스팸 메일을 유포하는 프로그램을 통해 대량의 메일들을 발송하곤 한다. 이러한 스팸메일을 확인하기 위해 MailPot 프로그램을 활용한다. 이 MailPot 프로그램은 fakeDNS 프로그램과 연동해 자신이 원하는 곳으로 유인해 아래와 같이 전송된 메일을 확인한다.



  ③ 다양한 모니터링 프로그램 활용




제2절 리눅스 사고 분석

1. 개요

  최근 리눅스 시스템에 대한 사고가 줄어들고 있는 경향을 보이고 있지만, 이는 리눅스 시스템의 활용도 자체가 낮아졌다는 것을 뜻하는 것은 아니다. 본 절에서는 리눅스 피해 시스템에 대한 정보수집 등의 초기 분석단계부터 로그분석과 상세분석 단계에 대해 알아보도록 한다.

2. 기본정보 수집
  해당 시스템 운영자 면담 또는 시스템에서 제공되는 명령어 등을 이용하여 다음과 같은 기본 정보를 수집한다.

  - 운영체제 종류 및 커널 버전
  - 사용용도
  - 운영 중인 서비스
  - 네트워크 접속 현황
  - 보안 패치 적용 현황
  - 네트워크 구성 형태 및 보안 장비 운영 현황

3. 휘발성 정보 수집
  리눅스 시스템에는 분석당시에만 존재하고, 시스템 리부팅 등을 통해 정보가 삭제될 수 있는 다양한 휘발성 정보가 존재한다. 휘발성 정보는 프로세스 상태, 네트워크 상태, 사용자 로그인 상태 등이 있으며, 사고분석 시 이러한 휘발성 정보를 우선적으로 검출하여야 한다.

  ● 프로세스 확인하기 : ps -ef
  ps는 process를 확인해 주는 것으로, process 실행자∙ PID∙실행 일시∙프로세스명 등을 보여준다.



  의심스런 PID를 찾는데 위의 예에서는 PID 316을 의심해볼 수 있으며, 어떤 프로세스인지 확인한다.

  ● lsof(List Open File)
lsof는 System에서 돌아가는 모든 process에 의해서 open된 파일들에 대한 정보를 보여주는 프로그램이다. 공격당한 시스템에 ps가 변조되어 있을 경우에는 ps로는 공격자가 구동한 process 정보를 제대로 볼 수 없는데 이럴 경우에는 lsof로 확인할 수 있다.



  ● netstat -an
  netstat는 현재 시스템의 네트워크 연결상태를 알려주는 명령어로 어떤 포트가 열려있는지 발신지 주소는 어떻게 되는지 등을 확인할 수 있다.



  ● nmap -sT -p 1-65535
  nmap(network mapper)은 네트워크 보안을 위한 유틸리티로, 대규모 네트워크를 고속으로 스캔하는 도구이다. 스캔 타입으로 -sT는 tcp scanning의 가장 기초적인 형태로 connect() 함수를 사용해서 모든 포트에 대해 스캔하는 방식을 의미하고, -p 는 점검하고자 하는 포트를 지정하는 옵션이다.



  ps, lsof, netstat, nmap 등을 통해 시스템의 상황을 파악하고, 공격자의 단서를 찾으며 세부사항을 살펴서 어떠한 기능이나 역할을 하는 것인지 확인해본다.

  ● fuser
  만일 netstat로 프로세스를 확인할 수 없는 경우, nmap과 fuser를 사용하여 어떤 프로세스에서 포트를 열었는지 확인할 수 있다. fuser는 현재 사용 중인 파일 또는 소켓이 사용하는 프로세스를 확인하는 명령어로 열려있는 포트와 해당 포트를 사용 중인 프로세스 확인을 통해 백도어 등의 악성 프로그램 구동 여부를 확인할 수 있다.



  ● 접속자 확인
  w, who등의 명령으로 접속자를 확인한다.



  -“ w”는utmp를참조하여현재시스템에성공적으로로그인한사용자에대한 snapshot을 제공해주는 명령으로 해킹 피해시스템 분석시에 반드시 확인해 보아야만 한다. 왜냐하면 현재 시스템 분석 중에 공격자가 같이 들어와 있을 경우 자신이 추적당하는 것을 눈치채고 주요 로그를 지우거나 아예 포맷팅을 해 버릴 수도 있기 때문이다.
  - 물론, 정상적인 로그인 절차를 거치지 않고 백도어를 통해 시스템에 접근했을 경우에는 실제 공격자가 시스템에 로그인해 있음에도 불구하고 보여지지 않는다.
  -“ w”의결과어떤사용자들이어디에서로그인해들어와있는지알수있고, 그리고 그 사용자들이 어떤 작업을 하고 있는지 보여준다.
  - 사고 분석시에 공격자를 규명하기 위해 특히 주의 깊게 봐야 할 부분들은 아래와 같다.
    · 접속한 사용자 계정이 모두 정상적인 사용자들인가?
    · 접속출처가 정상적인 위치인가? 특히, 내부 IP주소 이외에서 접속하였거나, 국외 IP주소에서 접속한 경우는 의심할 필요가 있다.
    · 사용자들의 행위가 정상적인가? scan 도구를 실행하고 있거나 타 시스템을 대상으로 서비스거부공격을 하고 있는지 살핀다.

4. 상세분석

  가. 패스워드 파일 분석
  ● /etc/passwd파일에서 uid=0인 계정(관리자 권한을 가진 계정)이 있는지를 확인한다.

    예) 불법계정이 추가된 /etc/passwd파일
         ...
         blah1::0:0::/tmp:/bin/bash
         user1:x:0:0::/home/user1:/bin/bash

  ● 또한 새로 생성된 계정이나 패스워드가 없는 계정도 점검하여 본다.

  나. 로그 파일 분석
  침해사고 피해가 발생한 시스템의 로그는 100% 신뢰할 수 없게 된다. 하지만 대부분의 사고에서 공격관련 로그와 함께 침입 후 진행된 작업의 흔적들이 로그에 남게 되므로 로그분석을 통해 사고원인을 파악하는데 많은 도움을 얻을 수 있다.

  ● 로그파일의 생성일자 및 변경일자 확인

  - 외부의 공격자는 공격으로 인해 생성되는 시스템 및 접속로그 등을 삭제하는 경우가 많다. 로그의 내용 중 일부를 삭제하거나 변경할 경우, 해당 로그파일의 수정일자가 변경되게 되므로 변경일자 확인을 통해 확인한다. 또한 로그 삭제 프로그램을 이용해 로그를 삭제하는 경우, syslog 데몬이 재시작 되는 로그가 남기도 한다.

  ● 주요 로그파일
  - utmp, wtmp
  해당 파일에는 현재 시스템에 로그인한 사용자나, 과거에 로그인했던 사용자의 정보가 저장되게 된다. 따라서 시스템 분석 시에 꼭 확인해야 하는 로그파일이나, passwd 파일에 등재되어 있는 계정을 이용해 정상적으로 시스템에 로그인했을 때에만 로그가 생성되게 된다.

  - messages
  많은 정보를 포함하고 있는 로그파일로서, 시스템 장애에 대한 정보와 더불어 공격으로 인해 남게 되는 많은 유용한 정보 또한 messages 파일에 남는 경우가 많다. 동작 중인 서비스에 대한 버퍼 오버플로우 공격의 경우, 특히 messages 파일에 그 흔적이 남게 되므로 사고 분석 시, messages 파일을 필히 확인하도록 한다.

  예) RPC.STATD 공격 시의 messages 로그
  messages.2:Mar 30 03:37:02 www statd[136]: attempt to create “/var/statmon/sm/;echo “ingreslock stream tcp nowait root /bin/sh sh -i” >>/tmp/bob ; /usr/sbin/inetd -s /tmp/bob &”messages.2:Mar 30 23:36:20 www statd[124]: attempt to create“ / v a r / s t a t m o n / s m / / ../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.
./../../../../../../../../../../../../../..../../../../../../../../../../../../../../../../../../../../../../../../..
/.././../../../../..../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../
../../../../../../../../../../../../tmp/.nfs09 D H $ $ $ $ O * * * * # # P *` c 6 ) # # ; # XbinXsh tirdwr

  ●웹 로그
  최근 많은 침해사고들이 웹 취약점을 이용한 것으로 확인되었다. 웹 취약점에 대한 공격은 주로 중국 해커에 의한 것으로 확인되고 있으며, 중국 해커 대부분은 공격을 위해 제작한 프로그램을 이용 공격을 한다.

  - access_log 확인

  <로그 예제>
  211.252.***.*** - - [07/Nov/2006:10:05:02 +0900]“ GET /goodstore.htm HTTP/1.1” 200 1738“ -”“Mozilla/4.0 (compatible; Google Desktop)”

    · Host (도메인 또는 IP 주소) <예제부분 211.252.***.*** >
      : 해당 웹 서버에 접속한 IP 주소를 나타낸다.
    · Identification <예제부분 - >
      : 사용자의 이름을 표시하는 곳으로서, 일반적으로 하이픈(-)으로 표시된다.
    · User Authentification <예제부분 - >
      : 패스워드가 표시되는 부분으로 사용자 인증이 사용된 경우에 표시된다. 일반적으로 하이픈(-)으로 표시된다.
    · Time Stamp <예제부분 [07/Nov/2006:10:05:02 +0900]>
      : 사이트 방문자가 접속한 시간이 나타나는 부분이다. +0900은 GMT(그리니치 표준시)를 의미한다.
    · HTTP Request 필드 <예제부분 GET /goodstore.htm HTTP/1.1>
      : 사용자가 접속한 방식(GET, POST)와 접속한 해당 파일, 접속에 사용된 HTTP 버전을 알수 있다.
    · Status 코드 <예제부분 200>
     : 사용자가 요청한 내용이 처리된 상태를 나타낸다. 세부적인 Status 코드는 아래 표와 같다.



    · Transfer Volume <예제부분 1738>
      : 호출된 파일의 용량을 나타낸다. 데이터가 없는 경우 하이픈(-) 또는 0으로 나타난다.

  - 공격 로그
  공격으로 인해 남게 되는 로그는 여러 유형이 있을 수 있다. 본 문서에서는 '05년 홈페이지 변조에 많이 이용되었던 국내 공개용 게시판 공격 시 남게 되는 로그를 살펴보도록 한다. PHP Injection 기법을 이용한 공격은 대부분 아래와 같은 형태의 로그를 남기게 된다.

    · 제로보드 공격로그 예제
      : 다음 로그는 제로보드 취약점 중, print_category.php 파일의 취약점을 이용해 공격한 access_log의 예제이다.
      ① 최초, 외부 사이트의 URL을 이용해, 피해 시스템에서 id 명령 실행을 통해, 취약점 존재여부와 웹 서버 구동 권한을 확인하고 있다.
      ② 그 후, 시스템 접속을 위해 백도어 프로그램(r0nin)을 피해시스템에 업로드 하고 있다.
      ③ 업로드한 백도어에 실행권한을 부여한 후, 백도어 프로그램을 실행하고 있다.



    · 테크노트 공격로그 예제
      : 다음 로그는 테크노트 취약점을 이용한 공격 시 access_log에 남게 되는 로그이다.
        공격에 이용된 취약점은 다르지만, 로그 상으로 확인되는 공격과정은 제로보드와 매우 유사한 것을 확인할 수 있다.

  ① 테크노트의 구성파일인 main.cgi 파일의 취약점으로 인해 웹 브라우저 상에서 바로 시스템 명령의 실행이 가능한 것을 확인할 수 있다. wget 명령을 이용해 외부의 사이트로부터 백도어 프로그램(rootdoor)을 다운로드 하고 있다.
  ② 다운로드 한 백도어 프로그램에 실행권한을 부여한 후 실행하고 있다.



다. 루트킷(Rootkit) 확인

  공격자는 자신의 행동을 숨기기 위해 정상적인 프로그램들을 대신하도록 바이너리 파일들을 변조시키는 경우가 많다. 예를 들어 ls를 바꿔치기해서 ls를 실행시켜도 공격자가 만든 파일이 보이지 않도록 하는 것이다.
  주로 많이 변조되며 루트킷에 포함되어 있는 프로그램으로는 ls, ps, netstat, login, top, dir, du, ifconfig, find, tcpd 등이 있다.

  시스템 프로그램의 파일크기, 생성시간, 변경시간등을 확인한다. /bin또는 /usr/bin에 가서 #ls -alct|more로 확인했을 때 다른 프로그램이 기본적으로 깔린 시간과 틀리게 변경된 것이 있는지 트로이잔으로 자주 변조되는 ls, ps, netstat등의 파일사이즈는 똑같은 OS, 버전의 다른 시스템의 프로그램과 비교하여 변조 여부를 확인한다.

  리눅스의 경우 rpm -V fileutils 명령어로 무결성 검사를 할 수 있다. 명령결과가 예를들어 S,5 .../bin/ls 로 나타난다면 파일크기 파일 내용이 변조됐다는 의미이다.



  솔라리스의 경우“fingerprint”를 제공하고 있으며 아래의 사이트에서 md5 프로그램을 다운받아 설치하고 검사하고자 하는 파일의 checksum 값을 만들어 이를 비교해 봄으로써 파일의 변조유무를 알수 있다.

  http://sunsolve.Sun.COM/pub-cgi/show.pl?target=content/content7

  strace 명령을 통해 시스템 콜을 추적할 수 있다. 트로이잔으로 변경된 시스템 프로그램과 정상적인 시스템 프로그램을 strace 명령어를 이용해 비교해 변조유무를 확인할 수 있다.

  예를 들어 공격을 당한 시스템을 분석했을 때 ps가 아래와 같이“/usr/lib/locale/ro_RO/uboot/etc/procrc”파일을 참조하는 것을 볼 수 있었으며, 이 파일은 공격자가 숨기고 싶은 프로세스명을 /usr/lib/locale/ro_RO/ uboot/etc/procrc에 나열하고 있었고 이런 경우 ps명령으로는 해당 프로세스가 보이지 않게 된다.



  그러므로 strace명령어를 이용해 위의 예에서처럼 시스템 명령의 변조유무와 숨기고자하는 파일들이 들어있는 위치 등을 파악할 수 있다.

  라. 기타 해킹 관련 파일 조사
  공격자가 피해 시스템에 들어와 어떤 작업을 했는지를 분석한다. 혹 다른 시스템을 스캔하거나 공격도구를 설치하였는지, irc서버를 설치하였는지, 로그를 삭제하였는지, 스니퍼프로그램을 설치하였는지 등을 조사한다.


  아래의 명령어는 최근에 수정되거나 새롭게 생성된 파일을 찾는 명령어로 공격자가 시스템 파일의 변조를 숨기기 위해 시간을 수정하는 경우가 있으므로 이러한 경우에 대비하여 inode 변경시간을 점검한다.

    예) 최근 10일동안 수정되거나 새롭게 생성된 파일을 찾아서 /var/kisa/cime10.out에 저장하라는 명령
    #find / -ctime -10 -print -xdev >/var/kisa/cime10.out

  setuid를 가지는 실행 프로그램은 실행도중에 슈퍼유저(root)의 권한을 가지고 실행되므로 find를 이용하여 setuid나 setgid 파일이 있는지 확인한다.

    #find / -user root -perm -4000 -print>suidlist
    #find / -user root -perm -2000 -print>sgidlist

  숨겨둔 파일 찾기 : 보통 공격자가 자주 해킹과 관련된 파일을 가져다 놓는 디렉터리는 /usr,/var,/dev,/tmp가 있으며 이런 디렉터리에 이상한 파일이 존재하지는 않는지 조사 한다.

  또한 공격자들은 주로“.”나“..”로 시작하는 디렉터리를 만들어 사용하는 경우가 많으므로 (이는 관리자가 아무런 옵션없이 ls 명령어를 사용할 경우 보이진 않으므로) 다음의 명령으로 숨겨진 디렉터리가 있는지 점검해본다.

  예) # find /-name "..*" -print 또는
       # find /-name ".*" -print

  예) 일반적으로 /dev밑에는 MAKEDEV등과 같은 device관리 파일외에의 일반파일이 있으면 안되므로 device관리 파일외에 일반파일이 검색되는지 확인한다.

       #find /dev -type f -print

  시스템이 부팅될 때 같이 수행되도록 /etc/rc.d 디렉터리(rc.sysinit, rc.local), rc0.d~rc6.d 디렉터리에 넣는 경우가 많으므로 이를 확인한다.

제3절 네트워크 사고 분석

1. 사고 유형별 수집 데이터
  침입 사고나 네트워크 공격이 발생했을 경우, 네트워크 관리자들이 발생 현황을 파악하고 증거 분석을 위해서 여러 가지 정보를 수집해야 한다. <표 3-7>은 네트워크에서 발생하는 다양한 사고의 종류와 해당 사고가 발생한 경우에 수집해야하는 정보들이다.



  위 <표 3-7>에서와 같이 대부분의 사고나 공격이 발생하는 경우, 그 원인과 발생지를 찾기 위해서 네트워크 트래픽 정보와 패킷은 반드시 수집하여 분석해야 한다. 네트워크 트래픽 정보는 MRTG와 같은 공개 소프트웨어나 네트워크 관리에 사용되는 많은 NMS(Network Management System), 보안을 위하여 사용하는 방화벽, IDS 등에서 수집할 수 있으며, 라우터나 스위치의 간단한 명령어만으로 확인할 수도 있다. 또한 명확한 원인 분석을 위하여 필요한 실제 네트워크 패킷들은 공개 프로토콜 분석기인 Ethereal이나 편리한 사용자 인터페이스를 제공하는 다양한 전문 분석기를 사용하여 간단하게 수집 및 분석할 수 있다.
  네트워크에서 수집할 수 있는 주요 정보는 대역폭 사용량, 트래픽을 대량으로 발생시키고 있는 IP 주소, 침입을 위하여 내부의 사용자나 서버의 IP 주소나 TCP/UDP 포트를 스캐닝하고 있는 IP 주소, 프로토콜 (TCP/UDP 포트)별 사용 현황, 라우터나 스위치의 포트별 트래픽 발생 현황 등과 같은 통계 데이터와 실제 데이터를 송수신하고 있는 패킷들이다.

2. 프로토콜개요
  네트워크에서 수집한 패킷들은 많은 IP와 TCP/UDP 헤더 정보를 포함하고 있기 때문에 패킷들을 명확하게 분석하기 위해서는 TCP/IP 헤더에 대한 이해가 필요하다. <그림 3-38>은 IP 헤더에 포함되는 정보이다.




  IP 헤더의 일부 필드는 네트워크 공격이나 침입에 사용된다.

  ● Flag (3 bits)
    - Bit“ 0”: 일반적으로0으로설정
    - Bit“ 1”: 0이면큰패킷에대한조각이며, 1이면조각을허용하지않는것이다.
    - Bit“ 2”: 0이면해당패킷이마지막조각이며, 1이면마지막이아니다.
    - 이 필드는 Ethernet에서 전송할 수 있는 1518bytes의 이하의 패킷을 강제로 작은 조각으로 분리해서 전송하는 경우에 사용한다. 즉, 대상 시스템의 전송 계층이 아닌 IP계층에서 패킷을 모두 모아야 상위 계층으로 전달하게 된다. 보안 장비에서 전송 계층의 헤더만 검색하는 경우에는 막을 수 없게 하는 방법으로 사용되기도 한다.

  ● Time to Live (8 bits)
    - 일반적으로 TTL이라고 하며, 해당 패킷이 전송과정에서 통과할 수 있는 최대 라우터개수를 나타낸다.
    - 해당 패킷의 전송 수명을 제한하는 것이며, 송신 시스템에서 특정 값으로 설정되어 라우터를 통과할 때마다 하나씩 감소한다.
    - 이 필드의 값이“0”에 도달하였을 때에 해당 패킷은 버려지고, 송신 시스템에게 ICMP 프로토콜을 사용하여 전송하는 과정에서 에러가 발생하였음을 통보하게 된다.(무한 라우팅 루프를 방지)
    - 내부적으로 시스템 간의 테스트 (local test)를 위하여“1”로 설정된 패킷을 송신하기도 하지만, 내부의 시스템에서 라우터와 네트워크를 공격하기 위하여 강제로“1”로 설정하기도 한다.

  ● Protocol (8 bits)
    - IP 계층(네트워크)의 상위 계층(전송)에 있는 프로토콜을 표시한다.
    - ICMP (1), TCP (6), UDP (17)
    - 0부터 255까지의 값을 갖지만, 255는 사용하지 못하게 예약되어 있다. 전송 계층의 프로토콜을 해석하지 못하여 전송 계층의 헤더를 해석하는 장비에서 오류가 발생하도록 공격하는 패킷에서 255로 사용하기도 한다.

  <그림 3-39>는 전송 계층인 TCP의 헤더이다. TCP 헤더는 시스템과 네트워크를 연결해주는 가장 중요한 계층이기 때문에 가장 복잡하고 공격이나 침입을 파악하기 위하여 주요 필드는 반드시 이해하고 있어야 한다. 대부분의 분석 자료에서 살펴보면, 네트워크 웜(worm),Dos 공격 및 침입 포트 또는 공격 패턴을 설명하기 위하여 많이 인용하는 헤더이다.



  침입이나 공격 패킷들을 분석하기 위해서는 다음 TCP 필드들을 살펴보아야 한다.

  ● Source Port (16 bits)
    - 0 ~ 65535까지 정의할 수 있으며, 해당 패킷을 보내는 시스템에서 할당한 논리적인 포트이다. 즉, 해당 패킷에 대한 응답을 받는 시스템의 포트이다.

  ● Destination Port (16 bits)
    - 0 ~ 65535까지 정의할 수 있으며, 해당 패킷을 받는 시스템에서 할당한 논리적인 포트이다.
    - 이 두 포트 번호가 상대적으로 서로 일치하면, 한 세션으로 인식된다.
    - 네트워크를 통하여 특정 어플리케이션을 공격하는 경우에는, 이 포트가 해당 어플리케이션에서 사용하는 서비스 포트이다. 대부분 한 포트만 공격하지만, 최근의 네트워크 웜들은 여러 개의 포트를 동시에 공격하는 경우도 있다.

  ● Sequence Number (32 bits)
    - 송신자가 전송하는 데이터의 TCP 세그먼트 번호이다.
    - 번호는 초기 접속 과정에서 할당되어 전송되는 데이터 세그먼트의 크기만큼 증가한다. 즉, TCP 헤더 다음에 포함되어 있는 데이터 바이트 수만큼 증가한다.
    - TCP 헤더 다음에 데이터가 포함되어 있지 않은 경우에는 증가하지 않는다. 즉, Ack
패킷의 경우에는 데이터가 포함되어 있지 않기 때문에 몇 개의 Ack 패킷들에 할당되
어 있는 번호가 같게 된다.

  ● Acknowledgement Number (32 bits)
    - 송신자가 해당 패킷을 수신하는 호스트로부터 다음에 받아야 하는 패킷의 TCP 세그먼트 번호이다. 즉, 해당 패킷을 수신한 호스트에서는 이 번호가 할당되어 있는 패킷으로 응답한다.

  ● Control Bits (6 bits)
    - TCP 세그먼트의 목적, 즉 해당 패킷의 용도를 표시한다. 각 필드가“1”로 설정되면, 해당 패킷??

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,033 명
  • 현재 강좌수 :  35,783 개
  • 현재 접속자 :  180 명