보안 위협 분석

TELESHIM 악성코드 분석

악성코드 분석        2026-08-04

개요

TELESHIM은 2026년 7월 Zscaler ThreatLabz가 중동 정부 기관을 표적으로 한 캠페인에서 최초 확인한 32비트 C++ Windows DLL 형태의 백도어이다. 위협 행위자는 지리적 위치, 시스템 로케일, 활동 시간대(UTC 04시~12시) 등을 종합해 동아시아 기반으로 평가되나, 알려진 APT 그룹으로의 귀속은 이루어지지 않은 상태이다. 캠페인은 ISO 이미지 내 정상 서명된 EXE파일을 악성 DLL파일이 사이드로딩하는 방식으로 시작하며, 이후 TELESHIM → MIXEDKEY → BINDCLOAK 의 3단계 침투 체인을 거쳐 최종 백도어에 도달한다.
이 중 TELESHIM은 침투 체인의 1단계로, 정찰 명령 실행과 후속 페이로드(MIXEDKEY 로더, BINDCLOAK 백도어)실행의 진입점이다. TELESHIM 단계에서 탐지·차단될 경우 MIXEDKEY 로드와 BINDCLOAK C2 통신이 모두 무력화되므로, 방어자 입장에서 가장 효과적인 차단 시점이 된다.
TELESHIM은 두 가지 관점에서 방어를 어렵게 만든다. 먼저 C2 채널로 텔레그램 봇 API(api.telegram.org)를 남용하여 정상 사용자 트래픽에 은닉한다. 두번째로는 문자열·API 임포트·네트워크 페이로드에 이중 암호화 계층(문자열별 CFF-XOR + Base64/44바이트 XOR)을 적용하고, 제어 흐름 평탄화(CFF)와 혼합 부울 산술(MBA)로 정적 분석을 어렵게 만든다.

<그림 1> 도식도

 

2) TELESHIM 분석

2-1) IOC 정보

 

이름 Agreement on the Establishment of a Joint Border Office
파일 타입 ISO 파일
MD5 087499849115EB28C4364581D2B28D09
SHA256 32529043d15e9111ba284f1d8a9e4b3f58e071c6b69c8f271d4d02feacd44e66
패킹 없음
비고 악성 DLL 파일이 포함된 ISO 파일

 

 

 

이름 AsTaskSched.dll
파일 타입 PE DLL (GUI) 32bit
MD5 7CBC51ADA1A4AEC88660EC32C408114B
SHA256 5c2fe953da53da66fbcbb3be0fd6b63907c10714c337f287b2fc258857bbff6d
패킹 없음
비고 1단계 백도어, 텔레그램 API를 사용한 C2 통신

 

 

 

2-2) 분석

TELESHIM은 ISO 파일로 배포되며 이미지 파일 실행 시 정상 EXE 파일과 악성 DLL 파일로 구성돼있다. 

<그림 2> 최초 배포된 img 파일 

 

EXE 파일은 ASUSTek에서 제공하는 정식 바이너리 파일이며, AsTaskSched.dll 이라는 악성 DLL 파일을 사이드로드한다. 사이드로딩 된 DLL은 C2 통신을 통해 TELESHIM, MIXEDKEY 및 BINDCLOAK을 배포한다. 

<그림 3> 최초 배포된 img 파일 

 

EXE 파일이 실행되면 폴더에 같이 동봉되어있던 AsTaskSched.dll 파일을 실행한다. 

<그림 4> DLL 사이드로딩 

 

2-3) DLL 내부 분석

DLL이 실행되면 먼저 중복실행 방지를 위해 “----WebKitFormBoundary7MA4YWxkTrZu0g” 문자열로 뮤택스를 생성한다. 

<그림 5> 뮤택스 생성 

 

분석 흐름을 방해하기 위해 %TEMP% 폴더에 “CVR9EEA.tmp”  파일을 생성해 읽기·쓰기·삭제 를 1,000회 반복 수행한다. 파일 내부엔 무작위로 생성된 1MB 데이터가 들어있다. 

<그림 6> 파일생성 및 데이터 작성 

 

<그림 7>은  CPUID 명령어를 사용한 안티디버깅 기법으로 하이퍼바이저 존재 여부를 감지하는 코드이다. CPUID(EAX=1) 실행 후 ECX 레지스터의 비트 31 값을 검사하며, 1이면 가상화 환경, 0이면 물리 환경으로 판정한다.
코드는 정적 분석을 방해하기 위해 *MBA로 난독화 되어있으며, 그림에 표시된 부분이 진짜 실행되는 코드다. 

*산술 비트 연산의 항등식을 활용해 단순 연산을 복잡한 수식으로 부풀려 정적 분석을 방해하는 코드 난독화 기법 

<그림 7> MBA로 난독화 된 CPUID 코드 

 

<그림 8> CPUID 검사 후 종료 로직 

 

또 다른 안티디버깅 기법으로는 RAM의 속도를 확인한다. 가상환경은 정의되지 않은 값을 리턴한다. 

<그림 9> RAM 속도 확인을 위한 cmd 명령어 수행 

 

자동실행 등록을 위해 “%PROGRAMDATA%\shimgen_Data” 경로에 EXE 파일과 DLL 파일 모두 자가복제를 수행한다. 

<그림 10> EXE 파일 생성 

 

<그림 11> 스케줄 생성을 통한 자동실행 등록 (6분마다 수행) 

 

이후 Telegram을 이용한 통신을 수행한다. 

 

 

2-4) Telegram을 이용한 통신 분석

TELESHIM의 통신 과정은 C2서버를 통해 명령어를 주고받는 여타 악성코드와는 다르다.
<그림 12>는 TELESHIM의 통신 과정을 나타낸 구조이며 URL은 하드코딩 된 BOT TOKEN을 사용하여 생성된다.
- https://api.telegram.org/bot8731536541:AAFYBCyZRph55NYb6By4_qM2BI2oYchULMg/getUpdates?offset 

<그림 12> TELESHIM 통신 과정 

 

<그림 13>은 Telegram 통신 이후 첫 JSON을 파싱하는 그림으로, 최초 파싱의 목적은 “가장 최신의 메시지를 저장"하는 목적이다. Telegram의 /gertUpdates는 offset 파라미터 없이 호출할 때 모든 과거의 메시지도 리턴한다. 따라서 최근의 메시지를 저장해 이후 명령어 실행 부분에서 “해당 메시지보다 새로운 메시지”만 처리하도록 update_id 정수 비교를 통해 필터링을 수행한다. 

<그림 13> 최초 JSON 파싱 

 

이후 통신은 앞선 <그림 12>에 나온 것 처럼 반복문을 통해 지속적으로 사용자의 명령어를 받을 수 있는 상태를 만든다. 공격자는 피해자에게 “13”을 전송하고, 13을 전달받은 피해자는 MAC 주소를 송신한다.   

<그림 14> MAC 주소 암호화 

 

그 다음부터는 [MAC][command] 형식으로 명령어를 전송하며, MAC 주소가 일치하지 않으면 명령어를 실행하지 않는다. 

공격자의 명령이 파일 다운로드 유형이면, 지정된 디렉터리를 생성하고 파일을 다운로드 한 뒤 44바이트의 XOR 키로 복호화하여 저장한다. 

<그림 15> 파일 다운로드 로직 

 

파일 다운로드 명령어 외에는 앞서 언급했던 MAC 회신, 쉘 명령 실행 등의 분기가 존재하며, 모든 회신 데이터는 44바이트 XOR 키로 암호화된다. 

<그림 16> MAC 주소가 일치 할 경우 cmd 명령어 수행 및 암호화 

 

2-5) 암호화 방식

TELESHIM 악성코드는 2가지 암호화 방식을 사용한다.
첫 번째 방식은 정적 문자열을 대상으로 사용하며 문자열마다 복호화 키가 다르다. 사용되는 문자열은 다음과 같다. 

 

뮤택스 명 ----WebKitFormBoundary7MA4YWxkTrZu0g
스케줄 명 shimgen
파일 경로 C:\programdata\shimgen_Data\
Import 이름 VirtualProtect, CreateProcessA 등
파일 명 AsTaskSched.dll, shimgen.exe

 

[표 1] 첫 번째 암호화 대상 문자열 

 

<그림 17> 복호화 알고리즘 

 

두 번째 방식은 고정된 44바이트의 키를 사용한 Base64+XOR 암호이다. 주로 네트워크 통신과 관련한 곳에 사용된다. 

8F 38 0C DA 29 6F 34 DE 27 69 7A 1A 53 05 18 49 B6 9D 59 E5 28 D7 E6 69 F1 7C F8 D3 CF 22 0B 66 96 DA 77 65 34 40 1C 8A 0F 0C 31 C6 

[표 2] 44바이트 키 

 

암호화 및 복호화 코드는 MBA로 난독화 되어있다. 

<그림 18> 두 번째 방식 암호화 알고리즘 

 

 

3) 결론

TELESHIM은 텔레그램 봇 API를 C2로 남용하는 1단계 정찰·배달 백도어이다. 감염 즉시 하드코딩된 봇 토큰과 채팅 ID로 /getUpdates 폴링 루프를 시작하고, 수신 메시지에 따라 두 유형의 명령을 처리한다. 첫째, message.text 가 매직 문자열 "13" 이면 GetAdaptersInfo 로 획득한 MAC 주소를 44바이트 롤링 XOR 로 암호화해 회신하며(감염자 등록), [MAC][command] 형식이면 자신의 MAC 과 일치할 경우 cmd.exe /C 로 셸 명령을 실행하고 결과를 1,000바이트 청크로 분할 회신한다. 둘째, message.caption + document.file_id 조합이면 /getFile API 로 파일을 다운로드해 44바이트 XOR 키로 복호화한 뒤 스케줄 태스크(Feedback, 10분 주기)로 후속 페이로드를 실행한다.

따라서 방어자 관점에서 TELESHIM 의 탐지는 임포트 함수나 문자열 기반의 단일 시그니처가 아닌 다층 지표의 조합으로 접근해야 한다. 네트워크 단에서는 프로세스가 api.telegram.org 로 /bot/getUpdates?offset= 패턴의 GET 요청을 1초 주기로 발생시키며 하드코딩된 구식 User-Agent(Chrome/13.0.748.0)를 사용하는 조합을 탐지해야 한다. 호스트 단에서는 C:\programdata\shimgen_Data\ 경로에 정상 RegSchdTask.exe 를 shimgen.exe 로 리네임한 사이드로딩 흔적, 6분 주기 스케줄 태스크(shimgen), 뮤텍스 ----WebKitFormBoundary7MA4YWxkTrZu0g 존재 여부, 그리고 32비트 프로세스가 wmic memorychip get speed 를 실행한 뒤 GetAdaptersInfo 를 호출하는 순차 행위를 상관 분석해야 한다.

특히 텔레그램은 정상 도메인이므로 IP·도메인 차단만으로는 무력화되지 않고, 문자열 암호화·MBA 난독화로 정적 시그니처 회피도 용이하다. TELESHIM 을 1단계에서 차단하는 것이 MIXEDKEY 반사 로드와 BINDCLOAK 최종 임플란트 배포를 모두 무력화하는 가장 효과적인 방어 지점이다.
 

 

4) IOC

789fd11285642861190dc074c1e9a5957073f1a2afebd5160f9cc907f7f320bd
c84542ac30cbe9bb8bd648bad323c37801023bf9451c1c0990452466e084340f
32529043d15e9111ba284f1d8a9e4b3f58e071c6b69c8f271d4d02feacd44e66
db11ff3f37a8b2aa25c480871504b886a6364167ecb501eacf7345f6bbf9582b
5c2fe953da53da66fbcbb3be0fd6b63907c10714c337f287b2fc258857bbff6d
cac1f37beaa814461f7709a073aeec468c74e5d70f7d693a9e367ece4a3a78be
0637069c7052118fd5c0f1113541bdd35e5f71cd9689f2516045da152c6fa8d9
3b3eaea783fd6dab90f0408274bf8a9c49adbdc70c0efd70658d65b0e1684a3f
3b0c658ebaa2bae80af97f390b9b2bb20a2f815eb584b2251255e84da4fa669d 

내용을 입력해주세요

 

 

출처 

내용을 입력해주세요

 

 

송어진

  • 위협분석센터
  • ej.song@piolink.com

 

  • 목록
문의