'보안/분석기술'에 해당되는 글 6건

  1. 2013.03.28 [malware 분석]urlQuery.net 활용방법
  2. 2012.11.29 네트워크/시스템 취약점 스캔/분석 기술(1)
  3. 2012.10.18 [System Tracking] 시스템변경 추적(모니터) 도구소개
  4. 2012.10.16 [스팸메일] 메일 헤더의 Bcc, return-path, Recived 추적
  5. 2012.10.15 [Pack/UnPack]엔트로피 실행 압축 확인&해제 기법 1
  6. 2012.09.17 패킷파일에서 데이터(파일) 추출하기

[malware 분석]urlQuery.net 활용방법

| 2013. 3. 28. 11:13
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

네트워크/시스템 취약점 스캔/분석 기술(1)

|

1) 취약점 분석의 의미

취약점 분석은 자신의 취약점 데이터베이스(or 지식, 기술, 경험)를 참조해 대상 시스템에 존재하는 취약점을 검색/나열하는 것을 일컫는다.

운영체제마다 사용하는 네트워크 구현 방식이 다르기 때문에 네트워크로 특정 데이터를 보냈을 때의 반응은 각기 다르게 응답하게 된다. 이런 고유한 형태의 응답은 취약점 스캔/분석의 단계를 통해 운영체제 버전 정보, 패치정보 등을 알아내는 데 사용하는 Fingerprint 역활을 하는데 도움을 준다.

여기에 (무료/상용)취약점 스캐너는 주어진 정보를 활요해 원격 시스템 로그인에 필요한 사용자 자격 증명을 설정하거나, 소프트웨어를 오픈하거나, 서비스의 패치 여부까지 판별해 낼 수 있는 수준이 되었다. 취약점 스캐너는 이렇게 얻은 결과로 시스템에서 탐지된 모든 취약점 보고서를 작성할 수 있으며, 이렇게 발견된 취약점 목록은 추후 Penetration Test에 활용되기도 한다.

 

2) 취약점 스캐너를 이용한 취약점 스캐닝

취약점 스캐너는 일반적으로 대량의 네트워크 트래픽(부정한)을 생성하게 된다. 이 때문에 모의해킹을 수행할 때 탐지되지 않아야 하는 테스트가 필요한 경우는 사용하지 않는 것이 좋다. 하지만 숨길 필요가 없는 테스트를 진행할 때에 이러한 취약점 스캐너는 시스템의 패치 수준과 취약점 식별을 수동으로 조사하는 것보다 시간을 절약할 수 있게 해준다.

자동화된 스캐너를 사용하든 수동으로 스캐닝을 진행하든지 간에 스캐닝은 모의 해킹 단계에서 가장 중요한 단계 중 하나이며, 철저하게 수행할수록 고객에게 가치있는 결과를 제공할 수 있게 된다는 사실을 명심하자.

 

# 일반적이 수동 스캐닝방법

가장 기본적인 수준에서 스캔이 어떻게 수행되는지 생각해보자.

예를 들어, nc(netcat)을 사용하여 대상시스템을 배너 그래빙(banner grabbing)하면, 아래와 같은 형태로 정보를 획득할 수 있을 것이다.

( 배너 그래빙: 원격 네트워크 서비스에 접속하고 반환되는 서비스 배너(확인) 문구를 살펴보고 추측 것으로, 웹, 파일 전송, 메일 서버 같은 다양한 네트워크 서비스는 원격으로 접속하자마자 즉시 배너를 반환하거나 특정 명령의 응답으로 배너를 반환하는 성질을 이용한 기술 )

 

- 대상 시스템: metasploitable v2 ( 192.168.100.2 )

- 스캔 시스템: bt5 r3 ( 192.168.100.9 )

위 결과는, TCP PORT 80 웹 서버에 접속하고, 응답으로 원격 서버에서 반환되는 헤더 정보를 확인하기 위해 "GET HTTP /1.1"을 요청한 결과이다.

반환된 정보를 통해 TCP PORT 80을 이용하는 대상시스템은 Apache/2.2.8을 사용하는 Ubuntu 기반의 웹 서버라는 사실을 알 수 있다. 이 정보는 향후 모의 해킹을 시도할 때 도움이 될 수 있을 뿐만 아니라, 자동화된 취약점 스캐닝을 이용할 때에도 상당한 도움이 될 수 있다.

 

다만, 위 내용은 기본적인 수준에서 보여주기 위한 내용으로 실전에서 이와같은 스캐닝은 그렇게 간단하지 않다.

이러한 취약점 스캔은 시스템과 애플리케이션 구성의 미묘한 차이로 인해 생각지 못한 오탐(false positive)와 미탐(false negative)이 발생될 수 있다. 따라서, 수동으로 수행하든 자동으로 수행하든 결국에는 발견된 취약점을 어떻게 확인하고 판단할지는 스캔을 수행하는 담당자의 몫이 아닐까 생각한다.

 

서두는 위의 글로 마치고, 다음에는 실제로 서비스되고 있는 몇 가지 자동화된 취약점 스캐너들을 이용하는 방법과 결과들을 정리하는 글을 써봐야겠다.^^

 

And

[System Tracking] 시스템변경 추적(모니터) 도구소개

|

침해사고가 발생된 시스템의 초기분석 과정에서 빠질 수 없는 것이 공격 후의 시스템내 변경내역을 추적하는 것이다. 이는 곧 공격자의 행위를 파악할 수 있기도 하거니와 피해범위를 산정하기 이한 작업이기도 하다. 하지만, 시스템의 변경을 추적한다는게 말처럼 쉽지는 않다. 다른 분석과정처럼 현 시스템의 어느부분이 변경되었으며 어떻게 악의적인 동작을 하는지 확인하는 방법이 쉽지않기 때문이다.

 

따라서, 여기서는 초기분석 시, 시스템의 변경을 추적하여 분석/접근하는 방법에 사용 가능한 도구를 소개하여 기록하고자 한다.

 

1. [Winalysis 3.1]

: 가장 많이 알려진 도구이기도 하고, 가장 많이 쓰이는 도구이기도 하다. 하지만, 무료 도구가 아닌관계로 트라이얼버전의 사용때문에 불편한 점이 없지 않으며, 시스템에 설치해야 한다는 단점이 있다. 이 도구는, 아래와 같이 [EventLog], [Snapshot], [Users], [Jobs] 기능으로 구성되어 있으며, 각 기능의 역활은 아래와 같다.

<인터페이스 구성>

□ EventLog: 시스템 로그 View

□ Snapshot: 현재 시스템 상태(레지스트리, 파일, 사용자, 등등)를 캡처 ( 이미 저장된 Snapshot과의 비교분석이 가능하다. )

□ Users: 시스템 사용자 View

□ Jobs: 작업 스케줄러 View

 

※ 다운로드: Winalysis v3.1

 

인터페이스

결과 출력 예 

 

 

 

 

 

2. [Regshot 1.8.2]

: 이 도구 역시 레지스티리와 파일의 변경내역을 비교하여 출력 가능한 도구이다. 이 도구의 장점은 매우 빠른 비교분석이 가능하다는 점과, 비교 결과를 텍스트형태뿐만이 아닌, HTML페이지 파일로도 선택하여 볼수 있다는 점이다. 또한 설치과정도 필요하지 않음.

<인터페이스 구성>

□ Compare logs save as: 비교 결과를 저장할 문서의 타입

□ Scan dir..: 검색 대상

□ 1st shot: 비교전 시스템 스냅샷

□ 2st shot: 현재 시스템 스냅샷

□ compare: 비교시작

※ 다운로드: Regshot

 

인터페이스

결과 출력 예 

 

 

 

 

 

3. [InstallWatch Pro v2.5c]

: 이 도구는 위의 [Winalysis]와 유사하며, 이 버전에서의 사용은 무료인 장점이 있다. 또한, All Files, INI Files, Registry 비교 분석이 가능하다.

<인터페이스 구성>

□ install: 비교전 시스템 상태 스냅샷

□ Config: 설정

□ Snapshot: 현재 시스템 상태 스냅샷

□ Analyze: 비교전과 현재의 스냅샷을 비교, 결과출력

※ 다운로드: InstallWatch Pro

 

인터페이스 

결과 출력 예 

 

 

 

 

4. [SystemSherlock Lite v1.0.0]

: 이 도구는 Command Line 인터페이스가 제공되며, 매우 상세한 값비교가 가능하다고 한다. (나도 써보진 않았음)

※ 다운로드 및 매뉴얼은 아래의 URL을 통해 확인 가능.

SystemSherlock Lite

 

위에 설명한 도구외에도 다양한 도구들이 더 존재하며, 여기서 다루지 않는 이유는 그러다보면 끝도없을 까바....(농담입니다.^^)

대략, [InstallSpy v2], [SpyMe Tools v1.5] 등등이 더 있으니 확인하고자 하시는 분들은 직접 검색, 확인해 보시길..^^

And

[스팸메일] 메일 헤더의 Bcc, return-path, Recived 추적

|

메일과 관련된 분석은 자주 발생하지는 않는다. 하지만 메일 역시 공격의 수단으로 많이 활용되는 경로임은 분명하다. 따라서 이메일에 대한 분석방법에 대해서도 한 번쯤 생각해 보는 것이 중요할 것이다.

 

메일과 관련된 내용은 Internet Message Format(RFC 2822)를 통해 자세히 알 수 있으며,

여기서는 메일 헤더의 각 필드에 대한 내용이 여기서 다루지 않을 생각이다. 각 헤더에 대해 자세히 확인하고자 한다면 위 문서를 통해 확인하길 바란다.

 

Bcc(숨은참조 기능)

여기서는, "도착주소 필드(Desitination address fields)"에 대한 내용에 대해 기록할 예정이다.( 이 부분을 잘못 기억하고 있어 피본 기억이 있음 ㅜ,ㅡ)

위 RFC2822 -> 3.6.3 섹션에 보면, 메일이 도착할 수 있는 주소필드는 총 3가지로 구분된다.

1. To - 받는 사람을 정의

1. CC(Carbon Copy) - 받는 사람외에 해당 메일을 참조하는 사람을 정의

2. Bcc(Blind Carbon Copy) - CC와 동일하나, 받는사람의 정의가 노출되지 않음 ( 숨은참조 ) -> 정말 이런건 왜만든 걸까. ㅜㅜ

 

위 3가지 중, 문제가 되는 것은 [Bcc]이다. 왜냐하면, 숨은참조를 하게되면 아무리 받은쪽에서 메일의 헤더를 본다고 한들 숨은참조된 대상을 확인할 수 없기 때문이다. ( 숨은참조한 대상은 메일을 발송한쪽에서만 확인이 가능하다. )

경우에 따라서는 Bcc는 대량의 메일 발송에 쓰이는 경우도 있기도 하다. (물론, 대부분은 이런 식으로 발송하지 않을 것이지만...)

 

이 Bcc는 스팸을 발송하는 공격자에게 꽤나 유용한 기능으로 생각되며, To에는 전혀 다른 사람의 메일 주소를 입력하고 Bcc에 메일 사용자의 주소를 입력해서 마치 사용자로 하여금 다른 사람한테 갈 메일이 자신에게 잘 못 수신된 것처럼 보여질 수 있게한다. 또한, 잘못 전달된 메일이라도 열어보려고 하는 것이 마치 습성인 사람도 있는 것이 문제이며, 이와 같은 기능은 스팸메일이 피해범위를 가늠하기도 어렵게 한다.

이러한 Bcc는 위와 같이 악용될 소지가 다분하기 때문에 일부 웹메일 서비스에서는 메일 작성 시, Bcc에 들어갈 수 있는 메일 주소의 수를 제한시켜두기도 하고, 스팸메일의 수신가능성 때문에 도착한 메일의 Bcc 필드가 설정된 수준 이상을 초과할 경우 스팸처리해 버리기도 한다.

( 정상적인 대량메일 발송의 경우, 숨은참조를 하는 것은 충분히 올바른 행동은 아니라고 생각됨 )

 

return-path

return-path는 보내진 메일의 반송처를 정의할 때 사용된다.

하지만, SMTP에 의해 옴겨지는 메일의 경우에는 보통 return-path 필드가 생략된다. (이는 SMTP 방식으로 인해)

 

Received

Received 필드는 아래와 같은 토큰열로 구성되며,

  1. 생략 가능, "from", atom, 의 후에 기호화 도메인명 ;
  2. 생략 가능, "by", atom 의 후에 기호화 도메인명;
  3. 생략 가능, "via", atom 의 후에 다른 atom;
  4. 다음의 것의 열(하늘도 가능): "with", atom의 후에 다른 atom;
  5. 생략 가능, "id", atom 의 후에 (1) atom 또는 (2) < 토큰, 기호화 주소, > 토큰;
  6. 생략 가능, a "for", atom, 의 후에 기호화 주소
  7. 세미콜론
  8. 타임 스탬프

각각의 SMTP서버는 받은 메일에 대한 Received 필드를 첨가하여 발신한다.

Received는 아래에서 위쪽으로 분석하여 경로를 확인할 수 있다.

 

아래에는 이메일 헤더정보를 입수했을 때 추적할 수 있는 방법을 추가로 기술한다.

이메일 추적을 지원하는 웹사이트: http://www.ip-adress.com/trace_email/

 

1. 이메일의 속성보기를 통해 메일헤더값을 확인/복사하여 이 사이트에 붙여넣기 한다. (아래 그림참조)

 

 

2. 하단의 [Trace Email Sender]버튼을 클릭한다.

3. 결과가 아래와 같이 출력된다.

( 여기서 추적한 결과는 이라크...로 나오네..;; )

 

And

[Pack/UnPack]엔트로피 실행 압축 확인&해제 기법

|

 

최근의 봇이나 웜 등의 악성코드들은, 안티 바이러스 프로그램을 회피하기 위해서 실행 압축 등의 코드 혼란 기법을 사용하고 있다. 이러한 기술들은 악성코드를 분석하고자 하는 인원들에게는 매우 환영받기 어려운 것들로 ㅜㅜ  이러한 기술들을 통해 악성코드의 탐지 및 방어는 점점 더 어려워 지고 있다.

여기서는 이러한 실행압축 기술의 분석에 응용 가능한 엔트로피 분석을 이용한 범용적인 압축해제 기법에 대해 다룬다.

 

실행압축이란, 실행 파일을 압축하여 파일의 크기를 줄이고, 파일의 분석을 어렵게 하는 기술로 실행압축 파일은 크게 실행 압축 해제 부분과 실제로 실행되는 부분으로 나눌 수 있다.

여기서 나오는 알고 넘어가야할 개념이 OEP(Original Entry Point)인데, OEP란 실행 압축 파일이 스스로 실행 압축을 해제한 뒤 처음으로 실행하는 명령어의 주소를 일컫는 용어로, 원래의 EP(Entry Point)를 말한다. OEP가 중요한 이유는 실행압축된 파일의 분석을 위해서는 실제로 실행되는 부분을 찾아야 분석이 가능하기 때문이다.

 

현재까지 주로 사용되는 실행압축 해제 기법은,

디버거 및 분석도구들을 이용하여 수동으로 분석하는 방법( 매우 비효과적이다. 하지만 알려지지 않은 패커의 등장에는 이방법밖에 없음을 잊지 말자 )

특정 실행 압축 알고리즘의 특징을 기반으로 한 압축해제 방법 ( 언패킹도구 활용. 알려지지 않은 패커일 경우에는 활용할 수 없음 )

실행 압축 기법에 의존하지 않는 실행압축 해제 방법

PolyUnpack 방식: 실행 압축 파일의 실행 흐름은 원래의 실행 파일의 명령어에 도달할 수밖에 없다는 가정을 바탕으로하며, 실행 압축한 코드를 연속적으로 일부분 실행하며 부분분석을 수행하고, 이를 통해 악성코드 여부를 판단할 수 있다.

OmniUnpack 방식: 모든 실행코드를 분석하지 않고 메모리를 관찰하여 프로세스가 데이터를 쓴 메모리 영역으로 실행 흐름이 바뀌는 순간 그 영역을 분석하는 방법 ( PolyUnpack 방식에 비해 필요 없는 분석 시간을 줄일 수 있음 )

Renovo 방식: 가상머신을 사용하여 실행 압축된 파일을 해제하는 기법으로, 분석하는 동안 악성코드 분석도구가 원래의 시스템으로 부터 격리되어 감염의 위험성이 현저히 낮아지니다는 점과 기존의 기법들과 달리 프로세스의 관점이 아닌 전체 시스템 관점에서 악성코드 분석이 가능하다는 장점이 있다. 하지만, OEP를 찾는데는 어려움이 있다.

 

● 엔트로피를 이용한 실행압축 해제 기법

여기서 말하는 방법은, Shannon의 정보 엔트로피 개념을 통하여 정보의 양을 수치화하는 압축확률확인 방법으로 압축 알고리즘의 압축률을 평가할 때 유용하게 이용되는 방법을 역이용하는 것이다.

엔트로피가 높은 데이터일수록 나타날 수 있는 모든 비트들이 고루 나열되어 엔트로피가 높을수록 압축률이 높다고 추측할 수 있게된다.

이러한 엔트로피의 특성을 이용하면 실행 압축된 파일이 실제 실행파일보다 압축률이 높기 때문에 비교적 더 높은 엔트로피 값을 갖게된다는 가설이 성립되며 이를 통해 실행압축된 파일임을 확인할 수 있는 것이다.

또한, 실제 실행압축 프로그램을 이용해 압축된 실행파일을 실행하게되면, 실행압축되기 전의 코드 위치와 같은 메모리 주소에 압축해제가 되는 것을 확인할 수 있다.

 

아래에는 이와 같은 기법의 연구내용 보고서를 참조한다.

 

Entropy Unpacking.zip

 

또한, 이 아래에는 엔트로피 값을 이용해 파일을 분석할 때 사용 가능한 도구를 추가 첨부한다. 이 도구는 원래 IDA Plugin으로 사용되지만, 윈도우에서 독립실행도 가능하다.

 

ida-ent.zip

 

(이 두 첨부파일은 암호로 보호됩니다.)

And

패킷파일에서 데이터(파일) 추출하기

| 2012. 9. 17. 16:56
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
prev | 1 | next