안녕하세요. 이번 주 주제는 정적, 동적 분석을 위한 툴들을 가상 환경에 실제로 설치하고 활용하는 방법들에 관하여 다루도록 하겠습니다.
과제 발표에 사용한 PPT 파일을 첨부합니다. 만약 지금 제가 거치고 있는 AI 스쿨 교육과정이 더 궁금하시다면 다음 링크를 통해 자세한 정보를 확인해 주세요.
https://cafe.naver.com/itscholar
가장 먼저 다룰 툴은 실시간 네트워크 연결을 감시하는 Currports입니다. Currports는 현제 시스템에서 열려있는 모든 포트를 표시하고, 표시한 포트를 이용하고 있는 프로세스를 보여주는 프로그램입니다.
Currports를 사용한다면 원하지 않는 연결을 차단하고, 포트를 여는 프로세스를 추적해 종료하고, 연결이 TCP인지 UDP인지 확인하고, 식별되지 않은 소프트웨어의 포트 개방을 감시할 수 있게 됩니다. 또한 어느 포트를 거친 트래픽의 총량을 검사하여 어느 프로세스가 트래픽을 과다 발생시키는지 감시하는 일도 가능합니다.
새로운 프로세스를 실행시키고 새로고침을 하면 새로 나타난 프로세스가 강조되어 표시되는 모습을 확인할 수 있으실 겁니다.
[이미지 1]
사진은 Currports를 실행한 뒤, 크롬을 실행하여 크롬에서 일어난 새 연결을 표시하는 모습니다. 이 방식으로 시스템의 열린 포트를 감시할 수 있습니다.
다음으로 다룰 툴은 ProcessMonitor입니다. 프로세스 모니터는 파일, 레지스트리, 네트워크, 프로세스, 스레드 등에서 일어나는 모든 이벤트들을 감지하여 보여주는 프로그램입니다.
[이미지 2]
위의 사진에서 보듯이 프로세스 모니터는 사용자 시스템 상에 일어나는 모든 이벤트들을 표시합니다. 잠시 동안 가동했는데도 좌측 하단을 보면 6만 여개의 이벤트가 기록되는 것을 볼 수 습니다. 프로세스 모니터는 사용자 시스템 상에 일어나는 이벤트들을 사소한 것을 모두 포착하여 알려주기 때문에 이 프로그램을 활용하려면 필터 기능을 활용하여 이벤트들을 역추적, 의미 있는 데이터로 가공해야 합니다.
필터 기능은 상단 아이콘 툴바에 나와 있는 대략적인 필터 기능과 filter 탭에 있는 고급 필터 기능이 존재합니다.
툴바의 필터 기능은 순서대로 레지스트리, 파일 시스템, 네트워크, 프로세스 및 스레드, 프로파일 이벤트입니다. 추적하고자 하는 이벤트에 따라서 활성화/비활성화를 하여 프로세스 모니터가 감지한 이벤트를 간소화 할 수 있습니다.
하지만 이런 필터 기능을 사용한다 하여도, 프로세스 모니터가 감지하는 이벤트의 목록은 어마어마하게 깁니다. 수 만개의 이벤트 목록을 하나하나 확인하고 있는 일은 불편하고 오래 걸리는 일입니다. 그렇기에 고급 필터 기능들이 존재합니다.
해당 기능은 특정 이벤트가 특정 조건에 해당하는지 확인하고 해당 조건에 부합한다면, 이벤트 리스트에 포함할 것인지, 혹은 제외할 것인지 필터 기능을 설정할 수 있습니다. 위의 사진은 프로세스 모니터의 기본 설정으로, 다른 감시 기능을 가진 소프트웨어들을 이벤트 감시 목록에 나타나지 않도록 하여 분석할 필요 없는 이벤트를 최소한으로 줄인 모습니다. 여기에 추가 설정으로 특정한 이름을 가진 프로세스만을 감시하는 등의 활용이 가능합니다.
하지만 프로세스 모니터에도 단점이 두 가지 존재합니다.
첫 번째, 프로세스 모니터의 이벤트 목록은 커널 수준에서는 동작하지 않는다는 점입니다. 프로세스 모니터가 감지하는 이벤트는 방대하지만, 이는 사용자 레벨에서의 이벤트들이지 시스템의 심부인 커널, 즉 운영체제 안에서 일어나는 이벤트 등은 감시하지 못합니다. 이러한 특징으로 인해 프로세스 모니터는 몇몇 종류의 루트킷을 탐지하지 못합니다.
두 번째, 프로세스 모니터가 제공하는 이벤트 목록이 너무 방대하기 때문에 사용자로 하여금 이벤트를 역추적하고 의미 있는 데이터를 사용자가 스스로 만들어내야 합니다. 이로 인해서 일관성 있는 감시에 사용하기 힘들다는 점입니다.
세 번째로 소개해드릴 툴은 Process Explorer입니다. 프로세스 익스플로러는 마치 우리가 평상시에 사용하는 작업관리자와 같은 형태를 가지고 있습니다. 물론 작업관리자 기능에 더해 더 강력한 기능들을 제공합니다.
[이미지 3]
위의 화면을 보면 알 수 있듯이, 현재 실행되고 있는 프로세스들을 보여주는 것을 넘어, 해당 프로세스들이 어느 트리에 해당하는 지까지 직관적으로 표시하고 있는 모습을 보여 줍니다. 여기에 더불어 프로세스 익스플로러에는 현재 실행중인 프로세스를 검사할 강력한 기능을 지원합니다.
바로 바이러스 토탈에 현재 실행중인 프로세스의 검사를 요청할 수 있습니다.
[이미지 4]
실습 과정에서 바이러스 토탈의 엔진 중 하나가 해당 프로세스가 악성코드라고 검사한 결과가 나타났습니다. 70여개의 엔진 중 단 하나만이 악성코드라 판단한 경우이기에 무시할 수도 있지만, 필요하다면 덤프 파일을 만들어 분석에 들어가거나 프로세스 혹은 프로세스 트리 전체를 꺼버리고 안티바이러스를 이용하여 시스템을 검사하는 등의 활용도 가능합니다.
다음으로 말씀드릴 툴은 System Explorer입니다. 시스템 익스플로러는 프로세스 익스플로러와 유사하게 작업관리자를 강화한 툴입니다. 작업 관리자를 강화한 툴답게 바로 전에 소개한 프로세스 익스플로러와 유사한 기능이 아주 많습니다. 하지만 여기서는 시스템 익스플로러에서 주로 사용하는 스냅샷 기능을 집중해서 소개하도록 하겠습니다.
[이미지 5]
위의 사진은 시스템 익스플로러를 이용해 스냅샷 1과 2를 찍고 해당 스냅샷이 서로 어떤 차이점이 있는지 분석해준 결과입니다. 실습에서는 크롬을 켜고 끄는 것으로 차이점을 만들어 냈고 그로 인하여 구글 크롬의 소프트웨어 위치와 실행으로 인핸 레지스트리의 변동 등이 감지된 모습입니다.
이 기능을 사용한다면 악성코드를 실행하기 전에 스냅샷을 찍고 악성코드를 실행한 후의 스냅샷을 찍어 각각 비교한다면 악성코드가 어떤 파일, 레지스트리에 접근하여 변조를 시도했는지, 일어난 변조가 어떤 것인지 분석할 수 있습니다.
다섯 번째로 소개해드릴 툴은 Autoruns입니다. 오토런즈는 그 이름에서 알 수 있듯이 윈도우의 시작 프로그램과 서비스들을 관리할 수 있는 프로그램입니다. 아주 간단한 툴로, 평상시의 시작 프로그램 및 서비스의 리스트를 저장하고 악성코드를 실행한 후 각 리스트를 서로 비교하여 분석하는 방식으로 사용합니다.
실습에서는 시작프로그램의 변동이 없었다는 결과가 나타났지만 좀 더 알아보기 위해 인터넷에서 해당 compare 기능의 결과가 어떻게 나타나는지 조사했습니다.
[이미지 6]
녹색의 경우 기존에 존재하지 않았지만 새로 생긴 시작 프로그램, 붉은색의 경우 기존에 존재했지만 더 이상 존재하지 않는 시작 프로그램입니다. 만약 악성코드가 시작프로그램을 변조한다면 어떻게 변조했는데 확인하는 일에 주요한 툴이 되겠습니다.
여섯 번째 툴은 smsniff입니다. 스마트 스니퍼는 현재 일어나는 패킷 통신을 간단히 확인해 볼 수 있는 툴입니다. 이 툴을 이용한다면 사용자가 송,수신하는 패킷을 모두 확인이 가능합니다. 스마트 스니퍼는 단독으로 사용하기에는 여러 어려움이 따릅니다. 하지만 이번에 첫 번째로 소개했던 Cport를 같이 사용한다면 실마리를 잡을 수 있습니다. 스마트스니퍼에서 수상한 패킷을 발견하고 해당 패킷이 사용한 포트를 Cport에서 확인하여 어느 프로세스가 해당 패킷을 보냈는지 확인하거나, 반대로 Cport에서 허가하지 않은 프로세스가 포트를 개방한 것을 확인하고 해당 포트가 어떤 패킷을 송수신 하고 있는지 확인할 수 있습니다.
그 다음 소개해드릴 프로그램은 wireshark입니다만...
와이어샤크의 경우 드라이버가 없다는 오류메세지가 발생하는데 오류 해결을 위한 방법을 찾지 못하여 실습을 진행하지 못했습니다.
다음 소개해드릴 툴들은 정적 분석을 위한 툴들입니다. 첫 번째 툴은 exeinfo pe입니다. exeinfo pe는 exe 파일의 패킹을 분석하기 위한 툴입니다. 패킹은 exe파일에 적용되는 압축 방식입니다. 마치 zip로 압축된 악성코드는 압축을 풀기 전까지 일반적인 파일로 보이는 것처럼, 패킹된 exe 파일은 실행되기 전 까지 악성코드를 감지하기 힘듭니다. 그렇기에 exeinfo pe와 같은 패킹 툴을 사용해서 해당 exe 파일이 어떤 규칙에 의해 패킹되었는지 확인하고 실제 내용물은 무엇인지 분석할 때 사용합니다.
원래 bintext와 strings, peview 프로그램을 이용하여 실습한 것을 바탕으로 추가로 설명을 하려 했으나, 여러 문제가 발생하여 해당 프로그램들을 실행할 수 없었습니다. 차후 과제에 이에 관한 내용을 더 보강하겠습니다.
'AI 스쿨 리팩토링 보안직무 과정' 카테고리의 다른 글
16주차 과제 - 악성코드 샘플 분석 2 (상) (4) | 2023.01.30 |
---|---|
15주차 과제 - 악성코드 샘플 분석 (0) | 2022.12.20 |
13주차 과제 - 샘플 구성 환경 구성 (0) | 2022.12.19 |
12주차 과제 - 악성코드 분석 도구 (0) | 2022.12.19 |
11주차 과제 - VIRUSTOTAL (0) | 2022.12.19 |
댓글