기업고객을 위해 발행하는 잡지인 월간 '안' 이라는 것이 있습니다. 이번에 안랩코어 행사 때 발표한 내용을 3부로 나누어 연재를 하게 되었는데, 여러분들에게도 도움이 될 것 같아 게시합니다. 글로써 그때 소개하지 못했던 내용을 좀더 다뤄보았고요, 네트워크 패킷 분석을 이해하는데 참고가 되었으면 좋겠습니다.
다음 월간 '안' 링크를 참고해 보셔도 좋습니다.
1)
[Tech Report] 네트워크 포렌식 의미, 그리고 패킷 해부
2)
안철수연구소 보안매거진 월간 '安'
연재 목차
1. 네트워크 포렌식 의미, 그리고 패킷 해부(이번 호)
2. 유용한 분석 도구 소개와 패킷 분석(2012년 1월호)
3. 사례를 통해 알아가는 실전 패킷 분석(2012년 2월호) |
10월 25일은 독도의 날이다. 고종황제가 1900년 10월 25일 칙령으로 독도 주권을 선포한 것을 기념하기 위해 ‘독도 참사랑운동본부’가 지정한 날이다. 벌써 111주년. 이 뜻깊은 날 안철수연구소는 소프트웨어 개발자들을 위한 전문 컨퍼런스인 ‘안랩코어 2011’을 개최했다. 그날 필자가 강연했던 네트워크 포렌식 분석 기술 발표 세션에 못다한 이야기를 지면을 통해 풀어보고자 3회에 걸쳐 연재한다.
네트워크 포렌식은 네트워크가 연관된 곳에서는 모두 이용되고 있다고 할 수 있다. 특정 영역의 대상이 아니며 IT 관련 담당자라면 누구에게나 필요한 것이다. 개발자도 예외는 아니다. 자, 그럼 지금부터 네트워크 분석의 세계로 들어가보자.
‘포렌식(Forensic)’이라고 하면 흔히 법적 증거를 찾기 위한 것을 떠올리기도 하지만, 포렌식은 분석 방법 및 과정과 같이 증거/흔적을 찾기 위한 모든 범주를 포함한다. ‘패킷 마이닝’, ‘패킷 포렌식’이라고도 불리며 필자는 분석이라는 관점에서 이야기를 나눠볼까 한다.
일단 제목부터 잠깐 들여다보자. 네트워크 포렌식 내용인데, 개발자도 알아야 한다고 말하고 있다. 네트워크 분석은 특정 분야의 누군가에게 한정된 것이 아니라 개발자부터 시작해서 네트워크 관리자, 보안 분석가/관리자, 시스템 관리자 등 많은 이들에게 필요한 부분이다. 즉, 네트워크 포렌식은 다양한 영역에서 사용되고 있으며, 네트워크와 관련된 모든 부분이 포렌식 대상이다. 그렇다면 네트워트 포렌식은 어떤 곳에 필요한 것인가? 사용되는 곳은 아주 다양하다.
● 네트워크 문제 해결
● 네트워크 성능 측정, 병목 구간, 활동 관찰
● 네트워크 최적화
● 네트워크 공격/위협 감지
● 기업 내부의 네트워크 감사, 부정 방지
● 프로그램에서 사용되는 프로토콜 네트워크 정보 확인
● IDS/IPS 시스템 시그니처 작성
네트워크 포렌식, 숨겨진 진실을 찾아라
네트워크를 분석하자면 ‘패킷’과 자주 접하게 된다. 패킷은 네트워크 흐름의 작은 단위로 네트워크 통신의 모든 것이 담겨 있다고 볼 수 있다. 패킷은 출발지와 목적지 간 통신을 하며, 이 패킷을 들여다보면 어떤 내용의 데이터인지 파악할 수가 있다. 이렇게 패킷의 깊은 곳까지 살펴볼 수 있는 것은 DPI(Deep Packet Inspection)라는 기술 덕분이다. DPI는 IDS/IPS, 그리고 전통적인 Stateful 방화벽의 기능적인 부분이 통합된 것이라고 할 수 있다. 과거 IP, 포트만 차단하는 방식을 넘어서 OSI 모델의 Layer 2부터 7까지 다 들여다볼 수 있게 되어 공격 탐지나 감청 등의 다양한 기능 구현에 이용되고 있다. 그렇다면 패킷만 보면 모든 통신 내용을 다 알 수 있을까? 실제로는 그렇지 않다.
네트워크에 연결되어 있는 지금 이 순간, 여러분의 모든 것이 감시당하고 있다고 생각해 보았는가? 과연 내 정보는 안전하게 전송되고 있는 것일까? 패킷만 분석하면 당신의 모든 내용을 추적할 수가 있다. 이처럼 네트워크를 감청하면 누구나 쉽게 데이터를 훔쳐볼 수 있기 때문에 암호화, 데이터 은닉 등의 방법이 등장했고 이것은 결국 네트워크 포렌식의 어려움을 가중시켰다.
데이터 은닉 방법 중 하나인 스테가노그라피(Steganography)를 살펴보자. 이것은 텍스트나 이미지, 오디오 파일 등에 또 다른 비밀스러운 내용을 숨겨놓는 기법을 뜻한다. 암호화와 반대되는 것으로, 메시지 의미는 숨기지만 메시지가 있다는 사실 자체를 숨기지는 않는다. 어렵지 않게 데이터를 은밀히 감출 수 있다. 일례로, 9.11 테러 때 오사마 빈 라덴이 특정 사이트에 메시지를 숨긴 사진을 올려 알 카에다에 지령을 전달했다고 알려져 있다. 아래에 똑같이 보이는 사진 두 장이 있다.
이 두 개의 사진은 겉으로는 같아 보인다. 하지만, 왼쪽은 정상 파일이고 오른쪽은 이미지 파일 안에 데이터가 은닉되어 있다. 패킷 관점에서 보면, 전송되는 데이터는 똑같은 일반 JPEG 형태의 이미지다. 이미지 파일 안에는 다음과 같은 데이터가 은닉되어 있는데, 분석가 입장에서는 이런 정상적인 포맷 안에 들어 있는 데이터를 추정하기가 상당히 힘들다. 이 이미지는 안랩코어 행사 때 필자가 만들어 실제 시연했던 매직아이(MagicEye)이다. 여러분도 눈을 또렷이 하고 정답을 한번 찾아보기 바란다.
<매직아이 보는 법>
멍하게 쳐다보는 느낌 또는 눈을 약간 치켜드는 기분으로 보면 입체적으로 표현된 내용이 나타나게 된다. 정답은 ‘KARA’이다. |
구조를 알면 패킷이 보인다.
패킷(packet)은 네트워크 흐름의 작은 단위이다. 지금 이 시간에도 수십 테라바이트, 아니 페타바이트 이상의 트래픽이 흘러 다니고 있다. 이 패킷을 저장한 것을 패킷 파일이라고 부르는데, 여기에는 여러 가지 형태가 있다. 그 중 대표적인 것이 PCAP 파일이다. 흔히 패킷 캡처 파일이라 하면 PCAP 형태의 파일을 이야기한다. PCAP는 Packet Capture의 약자이며 다음과 같은 구조를 가지고 있다.
파일의 첫 부분에 PCAP 파일임을 말해주는 헤더가 있고 그 후 패킷의 헤더, 이어서 해당 패킷 데이터가 있다. 패킷 헤더와 패킷 데이터가 연속적으로 반복 기록되어 있는 것이다.
[표 1] PCAP 파일 헤더 구조체
매직넘버는 고정된 값으로 0xa1b2c3d4이다. 숫자 4321과 알파벳 ABCD의 역순만 기억하면 되니 외우기도 쉽고, 이 값만 보아도 이것이 PCAP 파일이라고 추정할 수 있다. 버전 Major, Minor는 패킷 파일 포맷 버전을 뜻하며, thiszone, sigfigs는 시간과 관련한 것이고 snaplen은 캡처된 패킷의 길이, linktype은 데이터 링크 타입이다. 패킷 헤더 레코드는 아래와 같다.
[표 2] PCAP 레코드 헤더 구조체
좀더 쉽게 설명하기 위해 아래 예제 화면을 보자. 제일 처음에 패킷 파일 헤더인 매직넘버가 나오고, 패킷 헤더 시작 부분과 실제 패킷 데이터 시작 부분을 볼 수 있다. 패킷 헤더의 마지막 부분에는 패킷의 실제 길이 정보가 들어 있는데, 패킷 데이터 시작 바로 앞 부분 4바이트를 보면 알 수 있다. 첫 패킷의 길이는 0x00000047이고 10진수로 변환해 보면 71바이트라는 사실을 알게 된다. PCAP 파일 구조는 단순하기 때문에 위에서 언급한 구조체에 값을 맞춰보기만 하면 된다.
[그림 1] 패킷 파일의 RAW 데이터
패킷 분석 = 레고 조립?PCAP 파일 구조를 알아보았으니, 이제 패킷 데이터를 뜯어보도록 하자. [그림 2]는 패킷 분석 도구인 와이어샤크를 통해 일부 화면을 잡아본 것이다. 2003년 1월 25일 국내 인터넷 마비 사건을 가져온 문제의 패킷 데이터 일부이다. 이들은 각 헤더를 포함해 총 404바이트 길이의 작은 패킷만으로도 초당 수만 개의 패킷을 생성해 인터넷을 마비시켰다.
[그림 2] 슬래머(Slammer) 웜 패킷 일부
여기서 잠깐 OSI 7 Layer를 들여다보자. 우리가 통신하는 과정은 [그림 3]과 같은 과정을 거쳐서 이뤄지는데, 패킷 데이터 안에 바로 레이어 정보가 포함되어 있다.
[그림 3] OSI 7 Layer의 통신 관계
일반적으로 패킷 데이터 안에 들어있는 정보는 Data Link 레이어에 해당하는 이더넷 헤더 정보, Network 레이어에 해당하는 IP 정보, Transport 레이어에 해당하는 TCP 또는 UDP, 그리고 Application 레이어에 해당하는 Payload 정보로 구분해 볼 수 있다. 이런 기본 골격을 유지하고 있다는 사실을 알고 앞서 본 슬래머 웜 패킷 데이터를 살펴보면 된다. 각 헤더 정보는 이미 사전에 규약된 구조를 가지고 있으므로 그 규약에 맞게끔 각각의 정보를 끼워 맞추면 된다. [그림 4]에서 레이어별 이진 데이터 값들이 어떤 의미를 가지는지 표현해 보았다.
UDP 프로토콜은 이미 언급했고, 헤더의 순서는 제일 하단부터 시작하여 [데이터링크 헤더] [IP 헤더] [UDP 헤더] 순서로 이어진다.
[그림 4] 슬래머 웜 헤더 정보의 레이어별 분류
그림과 같이 패킷 데이터의 각 값은 헤더 구조와 딱 맞아 떨어진다. 이제 슬슬 여러분의 호기심이 뇌를 자극하기 시작할 것이다. 어려워만 보이던 패킷의 구조가 쉽게 이해되기 시작하면서 말이다. 흥미로워지기 시작한다면 여러분이 직접 패킷을 캡처해보고 패킷을 이와 같은 구조로 한번 맞춰보길 권한다. 직접 해봐야 자신의 지식이 된다는 사실을 명심하자!
[그림 5] 패킷 분석 도구에 의해 일목요연하게 정리된 헤더 정보
이와 같이 각 패킷 데이터는 사람이 일일이 살펴보고 이해하기가 쉽지 않기 때문에 와이어샤크와 같은 패킷 분석 도구가 이 일을 대신해준다. 물론, HEX 값만 보고 패킷을 이해할 수 있다면 이런 도구는 필요치 않지만 말이다.
패킷은 레고와 같다. 어릴 적 동심의 세계에 무한한 재미를 안겨주었던 레고를 보자. 각 블록이 처음에는 개개의 블록일 뿐이지만, 이것이 하나하나 결합되면 처음의 개별 블록의 모습은 사라지고 멋지게 완성된 새로운 블록으로 탄생한다. 패킷도 레고를 하듯이 맞추면, 어렵게만 보이던 각 이진 데이터 값이 하나로 완성되어 가면서 패킷이 전달하려고 하였던 원래의 의미를 파악할 수 있게 된다.
지금까지 네트워크 포렌식의 어려움과 패킷 분석을 시작하기 위한 기본에 대해 알아보았다. 다음 호에서는 실제로 패킷을 분석하는 방법과 유용하게 사용할 수 있는 몇 가지 패킷 분석 도구에 대해 소개하겠다.
<안철수연구소의 패킷 데이터 활용 사례>
수많은 패킷 데이터, 대개 분석이 끝나고 나면 사라져 버리고 만다. 하지만 분석된 데이터를 그냥 버리기는 아깝다. 축적된 데이터는 큰 자산이고 이 데이터를 분석하고 마이닝하여 유용한 데이터로 추출할 수가 있을까에 대한 고민이 계속 남는다. 따라서 안철수연구소는 ‘패킷 센터’라는 시스템에서 데이터를 활용하고 있다. 그 사례 하나를 공유해 본다.
온라인 게임 핵으로 진단되는 다수의 악성코드 샘플에서 유사한 점이 관찰되었다. 도메인 이름의 패턴이 주요 검색 포털 사이트 이름과 유사하여 패킷 센터에서 연관성이 있는 1만 2천여 건의 샘플 도메인을 확인하였다.
유명 도메인과 이름이 비슷한 도메인 이름
위 도표는 대표적인 도메인의 이름을 나열한 것으로 다음과 같은 공통 패턴을 가지고 있다.
각 도메인별로 건수를 조사해 보니 구글 70건, 야후 37건, 바이두 47건, 소후 17건, 시나 12건, 163.com 30건이었다. 하지만 도
메인, URI의 유사성만으로는 각 악성코드의 연관성을 100% 보기는 힘들다. 그러나 해당 도메인의 IP, 도메인 등록자를 확인해 보면 연관성은 더욱 깊어진다.
IP를 조사해 보니 각 도메인의 IP가 몇 개로 압축되었고, 88%가 중국에 위치한 IP였다. 패킷 센터를 통해 확인된 사항을 요약 정리하면 다음과 같다.
● 검색/포털 사이트들과 유사한 도메인 이름 사용
● 등록된 도메인 이름이 유사 패턴 사용
● 크게 5개의 IP로 압축되어 사용되고 있음
● 5개의 IP 중 88%가 중국 IP(2개)임
● 91%의 도메인 등록이 중국 도메인 등록 업체인 HICHINA에 의해 이뤄짐
주목할 만한 것이 90%가 넘는 도메인이 HICHINA라는 업체를 통해서 이루어진 것인데, 이 도메인을 유지하는 데도 많은 비용이 지출되는 것으로 추정된다.
위에서 언급한 것과 같이 패킷 센터 시스템을 통해 다양한 정보를 생성하고 이런 정보는 안철수연구소 제품의 탐지력 향상에 기여하고 있다. 분석된 각 정보는 단일 정보를 넘어, 여러 데이터와 더해지면서 그 가치는 커질 수 있다.@
<출처 : 안철수연구소 보안매거진 월간 '安'>