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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Kalim_Backdoor — Kalim 백도어 악성코드 보고서 | Kitploit
도구/GitHubGitHub/salaheldinfikri/kalim_backdoor
Indicator of Compromise (IOC) ManagementStatic AnalysisDynamic Analysis (Sandboxing)Persistence MechanismsMalware AnalysisDigital ForensicsCommand and ControlThreat IntelligenceLearning & Education
GitHubsalaheldinfikri/kalim_backdoor

Kalim_Backdoor

Kalim 백도어 악성코드 보고서

435개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

칼림 백도어 악성코드 분석 보고서

photo

이 보고서는 칼림 백도어 악성코드의 기능에 대해 다룹니다.

목차:

- 백도어란?

- 기술적 분석.

- 요약.

- 전술 및 기법 (MITRE ATT&CK).

- 침해 지표 (IOC).

- 야라 규칙.

백도어(Backdoor)란 무엇인가?

백도어는 정상적인 인증 및 보안 제어를 우회하여 시스템에 접근할 수 있는 숨겨진 방법입니다.

기술적 분석:

기본 정적 분석:

먼저 초기 분석을 위해 VirusTotal에 업로드합니다. 결과에 따르면 파일은 64비트 DLL이며, Kalim 악성코드 패밀리로 식별됩니다. 또한 여러 탐지 결과에서 MuddyWater 위협 그룹과의 연관 가능성이 제기됩니다.

2

악성코드는 또한 moodleuni[.]com 도메인과 네트워크 통신을 설정합니다.

1

일부 파일을 드롭합니다:

photo

이제 Die(Detect it Easy)에서 열어봅니다:

3

샘플은 많은 수의 Windows API를 임포트하며, 이는 패킹되지 않았음을 나타냅니다. 총 6개의 DLL(KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll, WININET.dll)에서 함수를 임포트합니다.

각 DLL에서 여러 API가 임포트되지만, 악성코드의 행동에서 중요한 역할을 하는 몇 가지 함수가 특히 주목할 만합니다.

구체적으로, 샘플은 WININET.dll에서 네트워킹 관련 API를 임포트하여 명령 및 제어(C2) 서버와 통신을 설정합니다. 또한 ole32.dll에서 COM 관련 함수를 활용하여 COM(Component Object Model) 개체를 생성하고 상호 작용합니다. 추가로 SHELL32.dll에서 SHGetFolderPathW를 사용하여 CSIDL 값으로 식별되는 시스템 디렉터리 경로를 검색합니다.

image

고급 정적 분석:

DllMain에서 수행되는 유일한 작업은 새 스레드를 생성하는 것입니다. 이 스레드 내에서 두 개의 함수인 sub_1800063A0와 StartAddress가 실행됩니다.

image

sub_1800063A0 함수를 분석한 결과, 두 개의 개별 단계로 구성되어 있음을 발견했습니다. 첫 번째 단계에서 악성코드는 자신의 복사본을 AppData\Roaming 디렉터리에 드롭합니다. 이를 위해 Updates라는 새 하위 디렉터리를 만든 후 update.exe라는 실행 파일을 생성합니다. 이 파일에 기록되는 바이너리 페이로드는 unk_18002AA10에 위치한 임베디드 데이터에서 직접 가져옵니다. 결과적으로 최종 파일은 "C:\Users<사용자명>\AppData\Roaming\Update\update.exe" 경로에 기록됩니다.

두 번째 단계에서 악성코드는 *RCLSID: {00021401-0000-0000-C000-000000000046}(Shell Link Object, CLSID_ShellLink에 해당)와 RIID: {000214F9-0000-0000-C000-000000000046}(IShellLinkW 인터페이스에 매핑)*를 사용하여 COM(Component Object Model) 개체를 초기화합니다. shell32.dll이 구현한 전체 Shell COM 인터페이스 테이블을 확인하면 호출된 메서드를 정확히 식별할 수 있습니다. 악성코드는 SetPath, SetDescription, Save, Release의 네 가지 주요 COM 메서드를 호출합니다. 이 함수들을 사용하여 Windows 시작 디렉터리에 MicrosoftUpdateSerice.lnk라는 악성 시작 바로 가기를 생성함으로써 감염된 시스템에 지속성을 확보합니다.

image

StartAddress 함수 분석

악성코드는 세 가지 개별 함수를 통해 네트워크 통신 로직을 구현하고 두 개의 별도 스레드를 생성합니다. 하나의 스레드는 명령 셸을 생성하고 관리하는 역할을 하며, 두 번째 스레드는 악성코드 실행 완료 후 수집된 데이터를 업로드하는 역할을 합니다.

세 가지 함수는 감염된 호스트와 명령 및 제어(C2) 서버 간의 통신을 총괄하며, 세 개의 논리적 계층으로 구성됩니다.

첫 번째 계층은 손상된 시스템에서 호스트 기반 핑거프린팅 정보를 수집하는 역할을 합니다. 두 번째 계층은 이 데이터를 암호화하고 전송을 위한 추가 조작을 수행하여 처리합니다. 세 번째 계층은 C2 도메인 moodleuni[.]com과 네트워크 통신을 설정하고 처리된 데이터를 전송합니다.

처음 두 개의 네트워크 관련 함수는 특히 인증 및 HTTP POST 요청 구성, 그리고 원격 서버로의 인증된 데이터 전송을 가능하게 합니다.

7

세 번째 함수는 C2 서버로부터 명령을 수신하는 역할을 합니다. 서버의 응답에 따라 악성코드는 다음 동작을 결정합니다—즉, 숨겨진 명령 셸을 생성하거나 C2로부터 받은 명령에 따라 수집된 데이터를 업로드합니다.

image

두 스레드를 분석하여 각각의 기능을 완전히 이해합니다.

첫 번째 스레드에서 악성코드는 작업 개체(Job Object)와 두 개의 파이프를 생성한 후 특정 속성을 설정합니다.

그런 다음 일부 속성을 가진 CMD를 생성합니다:

네 번째 인수의 값 1은 CMD가 파이프 핸들을 상속할 수 있음을 의미합니다.

다섯 번째 인수의 값 0x1000200u는 CMD에 다음이 있음을 의미합니다:

CREATE_NO_WINDOW = 0x0000000u

CREATE_NEW_PROCESS_GROUP = 0x0000200u

CREATE_UNICODE_ENVIRONMENT = 0x0000400u

그리고 일부 시작 정보: {구조체 크기 = 104바이트, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}. 첫 번째 파이프는 셸의 출력을 읽는 역할을 하고, 두 번째 파이프는 셸에 쓰는 역할을 합니다.

그리고 PROCESS_INFORMATION에 대한 포인터

셸을 생성한 후 작업 개체에 할당하고 C2로부터 명령을 기다리며 대기 상태로 전환합니다.

photo

셸은 공유 메모리를 통해 전송된 제어 명령을 확인합니다:

Pending: 정상 실행.

Terminate: 셸 종료 및 정리. 셸이 완전히 파괴되고 재설정됩니다.

Ctrlc: 남아있는 모든 자식 프로세스를 강제 종료합니다.

image

정상 작동에서는 명령이 존재하면 해당 명령을 CMD에 쓰고 PeekNamedPipe를 사용하여 출력을 확인한 후 버퍼에 저장합니다.

photo

두 번째 스레드.

스레드는 지정된 경로에 새 파일을 생성하는 것으로 시작합니다. 이 파일은 C2 서버에 업로드되기 전에 데이터를 임시로 저장하는 데 사용됩니다. 파일을 생성할 수 없거나 초기화 중 오류가 발생하면 함수는 공유 메모리에 상태 문자열 "error"를 설정하고 종료됩니다. 파일은 사용자 정의 헤더와 세션 식별자를 사용하여 합법적인 트래픽처럼 위장한 HTTPS를 통해 악성코드의 명령 및 제어 서버(moodleuni[.]com)로 전송됩니다. 업로드가 완료되면 함수는 공유 메모리를 업데이트하여 성공 또는 실패를 나타냅니다:

- 업로드 실패 시 "error".

- 업로드 성공 시 "done".

10

요약:

칼림 백도어 악성코드는 먼저 지속성을 확보하여 피해 시스템에 장기간 존재하는 것을 목표로 합니다. 이를 위해 시작 디렉터리(CSIDL_STARTUP) 내에 악성 바로 가기를 생성합니다:

C:\Users<사용자명>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

이 메커니즘은 시스템이 부팅될 때마다 악성코드가 자동으로 실행되도록 보장합니다.

지속성이 확보되면 악성코드는 명령 및 제어(C2) 서버인 moodleuni[.]com과의 통신을 시작합니다. 초기 인증 및 시스템 핑거프린팅 단계를 수행하며, 이 동안 호스트 기반 정보를 수집, 처리 및 암호화합니다. 그런 다음 악성코드는 명령 대기 상태에 진입하여 지속적으로 C2의 명령을 폴링합니다.

수신된 명령에 따라 악성코드는 동적으로 다음 동작을 결정할 수 있으며, 여기에는 대화형 제어를 위한 숨겨진 명령 셸 생성 또는 수집된 데이터를 C2 서버로 업로드하는 것이 포함됩니다. 이 모듈식 설계는 원격 명령 실행과 데이터 유출을 모두 가능하게 하여 칼림을 유연하고 지속적인 백도어로 만듭니다.

image

전술 및 기법 (MITRE ATT&CK):

침해 지표(IOC):

root@kitploit:~
- 패밀리 이름: Kalim
- 위협 행위자: MuddyWater 
- SHA256 = 0c8071494bc155c96f2cee998200f63efffcb5a064c021de0925504271806229
- C2 = moodleuni[.]com
- MicrosoftUpdateSerice.lnk
- 150.171.27.12 (VirusTotal에서 확인)

야라 규칙(Yara rule):

root@kitploit:~
rule kalim{
    meta:
        description = "Kalim 악성코드 탐지"
        author = "SalahEldin Fikri"

    strings:
		$m1  = "kalim.pdb" wide ascii
		
        $s1  = "UPLOAD"
        $s2  = "isHidden"
        $s3  = "/command"
        $s4  = "sleepTime"
        $s5  = "hardwareId"
        $s6  = "pending"
        $s7  = "ctrlc"
        $s8  = "terminate"
        $s9  = { 8D 01 02 04 08 10 20 40 80 1B 36 }
        $s10 = "KifHsNH6Xhgyebsr"


    condition:
        uint16(0) == 0x5A4D and 
		filesize < 500KB and
		($m1) and
		7 of ($s*)
}
도구 다운로드
전술(Tactic)기법 ID이름(Name)
지속성(Persistence)T1547.001시작 폴더(Startup Folder)
방어 회피(Defense Evasion)T1036.005위장(Masquerading)
실행(Execution)T1204.002사용자 실행(User Execution)
명령 및 제어/준비(Command & Control / Staging)T1105도구 전송(Ingress Tool Transfer)
방어 회피(Defense Evasion)T1559.001COM 남용(COM Abuse)