Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
malcom — Malcom - 멀웨어 통신 분석기 | Kitploit
도구/GitHubGitHub/tomchop/malcom
Network ForensicsMalware AnalysisThreat Intelligence
GitHubtomchop/malcom

malcom

Malcom - 멀웨어 통신 분석기

저장소 보기
1.2k21618년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Malcom - 악성코드 통신 분석기

Malcom은 네트워크 트래픽을 그래픽으로 표현하여 시스템의 네트워크 통신을 분석하고, 이를 알려진 악성코드 출처와 교차 참조하기 위한 도구입니다. 특정 악성코드 종류가 외부와 통신하려는 방식을 분석할 때 유용합니다.

  • Malcom이란?
  • 빠른 사용법
  • 설치
  • 설정 옵션
  • Docker 인스턴스
  • TLS 차단에 대한 간단한 참고
  • 환경
  • 피드
  • 기술 사양
  • 로드맵
  • 면책 조항
  • 라이선스

Malcom이란?

Malcom은 다음 작업을 도와줄 수 있습니다:

  • 중앙 명령 및 제어(C&C) 서버 탐지
  • 피어-투-피어 네트워크 이해
  • DNS 빠른 플럭스 인프라 관찰
  • 네트워크 아티팩트가 '알려진 악성'인지 신속히 판단

Malcom의 목표는 주어진 호스트나 네트워크에서 발생하는 네트워크 트래픽을 사람이 읽을 수 있는 버전으로 제공하여 악성코드 분석과 인텔리전스 수집을 더 빠르게 만드는 것입니다. 네트워크 트래픽 정보를 실행 가능한 인텔리전스로 더 빠르게 변환하세요.

wiki에서 몇 가지 멋진 스크린샷과 자체 피드를 추가하는 방법에 대한 튜토리얼이 포함된 빠른 시작을 확인하세요.

도움이 필요하거나 기여하고 싶다면 메일링 리스트에 가입하거나 IRC(#malcom on freenode.net, 꽤 조용하지만 항상 누군가 있습니다)에서 사람을 찾아보세요. 트위터 @tomchop_로 연락하셔도 됩니다.

호스트 tomchop.me의 예제 그래프입니다. nodes-tomchop.png

데이터셋 보기 (IP만 표시하도록 필터링됨) dataset-view.png

빠른 사용법

  • 설치
  • mongodb와 redis-server가 실행 중인지 확인
  • 루트 권한으로 상승 (네, 알고 있습니다. 면책 조항 참조)
  • 기본 구성으로 웹 서버 시작: ./malcom.py -c malcom.conf (또는 ./malcom.py --help로 옵션 확인) ** 예제 구성 파일로 malcom.conf.example을 malcom.conf에 복사할 수 있습니다. ** 기본 포트는 8080입니다. ** 또는 celery에서 피드를 실행하세요. 자세한 내용은 피드 섹션을 참조하세요.

설치

Malcom은 Python으로 작성되었습니다. 필요한 라이브러리가 있다면 모든 플랫폼에서 실행할 수 있습니다. 시스템 라이브러리를 망가뜨리지 않도록 Python 가상 환경(virtualenv) 사용을 적극 권장합니다.

다음은 Ubuntu server 14.04 LTS에서 테스트되었습니다:

  • git, python, libevent 라이브러리, mongodb, redis 및 기타 종속성 설치

    root@kitploit:~
      $ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
    
  • Git 리포지토리 클론:

    root@kitploit:~
      $ git clone https://github.com/tomchop/malcom.git malcom
    
  • 가상 환경 생성 및 활성화:

    root@kitploit:~
      $ cd malcom
      $ virtualenv env-malcom
      $ source env-malcom/bin/activate
    
  • scapy 다운로드 및 설치:

    root@kitploit:~
      $ cd .. 
      $ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
      $ tar xvzf scapy-latest.tar.gz
      $ cd scapy-2.1.0
      $ python setup.py install
    
  • 가상 환경 내에서 requirements.txt 파일의 필요한 Python 패키지 설치:

설정 옵션

데이터베이스

기본적으로 Malcom은 로컬 mongodb 인스턴스에 연결하여 malcom이라는 자체 데이터베이스를 생성합니다. 이 설정이 적합하다면 다음 단계를 건너뛸 수 있습니다. 그렇지 않으면 malcom.conf 파일의 database 섹션을 편집해야 합니다.

Malcom 데이터베이스의 다른 이름 설정

기본적으로 Malcom은 malcom이라는 데이터베이스를 사용합니다. malcom.conf 파일을 편집하여 database 섹션의 name 지시문을 원하는 대로 설정하면 이 동작을 변경할 수 있습니다.

root@kitploit:~
    [database]
    ...
    name = my_malcom_database
    ...
원격 데이터베이스

기본적으로 Malcom은 localhost에 연결을 시도하지만 데이터베이스가 다른 서버에 있을 수 있습니다. 이를 변경하려면 hosts 지시문을 설정하면 됩니다. 호스트 이름이나 IPv4/v6 주소를 사용할 수 있습니다(IPv6 주소는 [와 ]로 감싸야 합니다, 예: [::1]).

호스트 my.mongo.server에 독립형 데이터베이스를 사용하려면 다음과 같이 설정하세요:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo.server
    ...

mongod가 수신 대기 중인 포트도 서버 이름/주소 뒤에 :로 구분하여 지정할 수 있습니다:

root@kitploit:~
    [database]
    ...
    hosts = localhost:27008
    ...

그리고 ReplicaSet을 사용하여 my.mongo1.server와 my.mongo2.server를 그룹화하는 경우:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo1.server,my.mongo2.server
    ...
인증 사용

mongod 인스턴스가 인증된 연결을 강제하도록 설정했을 수 있습니다. 이 경우 드라이버가 mongod 인스턴스에 연결하는 데 사용할 사용자 이름을 설정해야 합니다. 이렇게 하려면 malcom.conf 파일의 database 섹션에 username 지시문을 추가하세요. 또한 password 지시문으로 비밀번호를 설정해야 할 수도 있습니다. 사용자에게 비밀번호가 없으면 password 지시문을 무시(즉, 주석 처리)하세요.

root@kitploit:~
    [database]
    ...
    username = my_user
    password = change_me
    ...

사용자가 malcom 데이터베이스가 아닌 다른 데이터베이스(예: 관리 사용자의 admin 데이터베이스)에 연결된 경우 authentication_database 지시문에 해당 데이터베이스 이름을 설정해야 합니다.

root@kitploit:~
    [database]
    ...
    authentication_database = some_other_database
    ...
복제 세트의 경우

복제 세트를 사용할 때 올바른 세트에 연결되었는지 확인해야 할 수 있습니다. 이를 위해 replset 지시문을 추가하여 mongo 드라이버가 복제 세트 이름을 확인하도록 강제합니다.

root@kitploit:~
    [database]
    ...
    replset = my_mongo_replica
    ...

기본적으로 Malcom은 복제 세트의 기본 노드에 연결을 시도합니다. 이를 변경해야 할 수도 있습니다. 이 동작을 변경하려면 read_preference 지시문을 설정하세요. 자세한 내용은 mongo 문서를 참조하세요.

root@kitploit:~
    [database]
    ...
    read_preference = NEAREST
    ...

지원되는 읽기 기본 설정은 다음과 같습니다:

  • PRIMARY
  • PRIMARY_PREFERRED
  • SECONDARY
  • SECONDARY_PREFERRED
  • NEAREST

Docker 인스턴스

가장 빠른 시작 방법은 공개 Docker 저장소에서 Docker 이미지를 가져오는 것입니다. 더 오래되고 안정적인 Docker 빌드를 가져오려면 tomchop/malcom-automatic 대신 tomchop/malcom을 사용하세요.

root@kitploit:~
    $ sudo docker pull tomchop/malcom-automatic
    $ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic

http://<docker_host>:8080/에 접속하면 시작할 수 있습니다.

TLS 차단에 대한 간단한 참고

Malcom은 이제 TLS 차단을 지원합니다. 이를 작동시키려면 Malcom/networking/tlsproxy/keys 디렉토리에 몇 가지 키를 생성해야 합니다. 방법에 대한 자세한 내용은 해당 디렉토리의 KEYS.md 파일을 참조하세요.

또한 IPtables(이미 설치되어 있어야 함)와 포트 포워딩 권한(일반적으로 root 권한 필요)이 있는지 확인하세요. 편리한 forward_port.sh 스크립트를 사용하여 이 작업을 수행할 수 있습니다. 예를 들어, 포트 443으로 향하는 모든 TLS 통신을 차단하려면 forward_port.sh 443 9999를 사용하세요. 그런 다음 Malcom에게 포트 9999에서 차단 프록시를 실행하도록 지시해야 합니다.

이 프로세스는 향후 릴리스에서 자동화될 예정입니다.

환경

Malcom은 Ubuntu Server 14.04 LTS VM에서 설계 및 테스트되었습니다.

악성코드 분석에 익숙하다면 이미 호스트 OS에 수많은 가상 머신이 있을 것입니다. 새 VM에 Malcom을 설치하고 다른 VM의 연결을 Malcom을 통해 라우팅하세요. enable_routing.sh를 사용하여 Malcom이 실행 중인 VM에서 라우팅/NAT를 활성화하세요. 게스트 OS에 추가 네트워크 카드를 추가해야 합니다.

Malcom은 계층 3 네트워크 데이터를 수신하는 한 어디에나 배포할 수 있습니다. 고가용성 네트워크에서는 사용을 권장하지 않지만(빠르게 설계되지 않았습니다. 면책 조항 참조), 스위치의 미러 포트 끝이나 게이트웨이에서 실행할 수 있습니다.

피드

피드에서만 정보를 가져오는 Malcom 인스턴스를 실행하려면 --feeds 옵션을 사용하거나 구성 파일을 조정하세요.

데이터베이스가 자동으로 채워져야 합니다. 코드를 살펴볼 수 있다면 피드를 추가하는 것은 매우 간단합니다(Evil 객체를 생성한다고 가정). /feeds/zeustracker에서 예제 피드를 찾을 수 있습니다. 더 자세한 튜토리얼은 여기에서 확인할 수 있습니다.

celery를 사용하여 피드를 실행할 수도 있습니다. 가상 환경에서 $ pip install celery를 실행하여 celery가 설치되었는지 확인하세요. 그런 다음 celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12를 사용하여 12개의 동시 워커로 피드 프로세스를 실행할 수 있습니다.

기술 사양

Malcom은 대부분 Python으로 처음부터 작성되었습니다. 다음 프레임워크를 사용합니다:

  • flask - 가벼운 Python 웹 프레임워크
  • mongodb - NoSQL 데이터베이스. pymongo를 통해 Python과 인터페이스
  • redis - 고급 인메모리 키-값 저장소
  • d3js - 멋진 힘 기반 그래프를 생성하는 JavaScript 라이브러리 (https://github.com/mbostock/d3/wiki/Gallery)
  • bootstrap - 궁극적으로 웹 디자인을 없앨 CSS 프레임워크지만, 명령 프롬프트에서만 작동하는 애플리케이션을 빠르게 "웹화"하는 데 매우 유용합니다.

로드맵

협업 - 이 도구의 주요 방향은 협업 기능을 갖추는 것입니다. 몇 가지 아이디어가 있으며, 데이터 공유가 구현되면 100배 더 유용해질 것이라고 생각합니다.

확장성 - 도구에 포함시키고 싶은 또 다른 사항은 더 쉽게 확장할 수 있는 기능입니다. 모든 사람이 동일한 요구 사항을 가지고 있지는 않으며, 이 도구는 제 요구 사항을 염두에 두고 설계되었습니다. 이제 새 피드를 추가하여 Malcom을 사용자 정의할 수 있습니다.

협업과 확장이 완료되면, 더 많은 사고 대응 담당자에게 유용할 것이라고 생각합니다. :-)

면책 조항

이 도구는 여가 시간에 작성되었습니다. 우리가 매일 다운로드하여 사용하는 수많은 도구와 마찬가지로, 데이터 안정성과 신뢰성이 필수인 프로덕션 환경에서는 사용하지 않는 것이 좋습니다.

  • 손상되었거나, 보안에 취약하거나(통제되지 않은 환경에서 root로 실행하는 것은 좋은 생각이 아닐 수 있습니다), 전혀 작동하지 않을 수 있습니다.
  • Python으로 작성되었으므로 초고속 또는 대량의 데이터를 쉽게 처리할 것으로 기대하지 마세요.
  • 저는 코더가 아니므로 모든 곳에서 아름다운 Python 코드나 많은 주석을 기대하지 마세요.

초기 개발 단계에 있으며, "저에게는 작동한다"는 의미입니다. 자유롭게 공유하고, 개선하고, 풀 리퀘스트를 요청하세요.

라이선스

Malcom - Malware communications analyzer Copyright (C) 2013 Thomas Chopitea

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Malcom에 포함된 Redis, MongoDB, d3js, Maxmind 및 Bootstrap(및 기타 타사 라이브러리)은 자체 GPL 호환 라이선스를 가질 수 있습니다.

도구 다운로드
root@kitploit:~
  $ cd ../malcom
  $ pip install -r requirements.txt
  • IP 지리적 위치 기능을 사용하려면 Maxmind 데이터베이스를 다운로드하여 malcom/Malcom/auxiliary/geoIP 디렉토리에 압축을 풀어야 합니다. 다음 링크에서 Maxmind의 무료(따라서 정확도가 다소 낮을 수 있음) 데이터베이스를 받을 수 있습니다: http://dev.maxmind.com/geoip/geoip2/geolite2/:

    root@kitploit:~
      $ cd Malcom/auxiliary/geoIP
      $ wget http://geolite.maxmind.com/download/geoip/database/Geolite2-City.mmdb.gz
      $ gunzip -d GeoLite2-City.mmdb.gz
      $ mv Geolite2-City.mmdb GeoIP2-City.mmdb
    
  • malcom 디렉토리에서 ./malcom.py로 웹 서버를 실행합니다. 수신 인터페이스와 포트는 ./malcom.py --help를 확인하세요.

    • 시작하려면 malcom.conf.example 파일을 malcom.conf에 복사하고 ./malcom.py -c malcom.conf를 실행할 수 있습니다.