보안 위협 분석

온라인 문의

BianLian 랜섬웨어 분석

악성코드 분석        2026-05-14

 

BianLian 랜섬웨어




Go 언어 기반 BianLian 랜섬웨어 변종 분석



 

 

1)개요


BianLian은 2022년 6월 처음 등장한 이후 미국·호주의 주요 산업을 표적으로 활동해온 랜섬웨어다. 랜섬웨어란 피해자의 파일을 암호화를 하여 사용하지 못하게 만든 뒤, 복구 대가로 금전을 요구하는 악성 프로그램이다. BianLian은 Go 언어(Google이 만든 프로그래밍 언어로, 한 번 컴파일하면 Windows·Linux·Mac 어디서든 빠르게 동작하는 것이 특징)로 작성되어 여러 운영체제를 동시에 겨냥할 수 있다. 또한 파일을 처음부터 끝까지 모두 암호화하는 대신 일부만 골라 암호화하는 방식과, 중요한 파일을 먼저 처리하는 우선순위 구조를 통해 비교적 짧은 시간 안에 광범위한 파일 훼손을 유발할 수 있는 것이 특징이다.
공개된 분석 보고서에 따르면 SecurityScorecard·Cyble·BlackBerry 등 다수 보안업체가 2022~2023년 초기 변종을 분석했으며, CISA는 2023년 5월 #StopRansomware 권고문을 발행한 뒤 2024년 11월 이를 갱신했다. FBI와 호주 ASD ACSC 또한 BianLian이 미국 중요 인프라와 호주 민간 기업을 지속적으로 표적으로 한다고 공동 권고를 발표한 바 있다.

 

 

 

2) 분석 대상 및 전체 공격 흐름

BianLian 그룹은 일반적으로 원격 접속 계정 정보를 훔치거나, 보안 패치가 되지 않은 회사용 메일 서버·VPN 장비의 취약점을 이용해 회사 네트워크 내부에 처음 침투한다. 그 다음에는 측면 이동(Lateral Movement, 한 대의 PC에서 다른 PC로 차례차례 옮겨 다니며 권한을 확장하는 행위)을 통해 회사 네트워크 전체를 장악한 뒤, 마지막 단계에서 본 보고서가 분석한 BianLian 랜섬웨어를 실행시킨다. 즉 본 분석 대상은 "공격의 마지막 단계인 암호화 페이로드"이며, 침투·측면 이동·자격증명 탈취 같은 사전 단계는 별도의 도구가 수행한다.
분석 대상 파일은 별도의 다운로더나 도우미 프로그램 없이 그 자체로 모든 기능을 수행하는 단일 실행 파일이다. 두 개의 실행 옵션을 가지는데, "-e <경로>" 옵션은 특정 폴더만 암호화 대상으로 지정할 때 사용하고, 옵션을 주지 않으면 모든 고정 디스크의 모든 폴더를 자동으로 탐색한다. "-debug" 옵션을 사용하면 동작 과정의 로그가 별도 파일에 기록된다.
실행되면 다음과 같은 순서로 동작한다.
① 실행 옵션 처리 → ② 동시 작업 환경 준비 → ③ 1단계: 가상디스크·백업 파일 등 시스템 복구에 쓰일 수 있는 파일 925종을 먼저 암호화하면서 동시에 랜섬노트(피해자에게 보내는 협박 안내문)를 배포 → ④ 2단계: PDF·워드·엑셀 같은 사용자 업무 문서 568종 암호화 → ⑤ 3단계: 시스템 동작에 꼭 필요한 일부 파일을 제외한 나머지 모든 파일 암호화 → ⑥ 자기 자신을 삭제하여 흔적 제거.
각 단계는 이전 단계가 완전히 끝난 뒤에 다음 단계로 넘어가도록 동기화되어 있다.

<그림 1> 전체 공격 흐름도



3) 공격 기법 분석

순차적 3단계 우선순위 암호화

본 샘플 기준으로 BianLian의 가장 큰 구조적 특징은 모든 파일을 한 번에 무차별로 암호화하지 않고, 중요도에 따라 세 단계로 나눠서 순차적으로 처리한다는 점이다. 같은 스캔 작업을 단계 번호만 1, 2, 3으로 바꿔가며 세 번 반복 실행하며, 각 단계가 완전히 끝난 후에야 다음 단계로 넘어간다. 이렇게 단계를 나누는 이유는 가장 피해를 키울 수 있는 파일부터 먼저 망가뜨려 피해자가 복구할 시간을 벌지 못하게 하기 위함이다.
1단계 (가상디스크·백업 파일 우선): 925개의 특정 확장자 목록과 일치하는 파일만 골라서 먼저 암호화한다. 이 목록에는 가상머신 이미지(.vmdk, .ova 등 — 한 PC 안에 또 다른 PC를 통째로 담아 둔 파일), 백업 파일(.bak, .iso 등) 등이 포함된다. 회사가 평소 만들어 둔 백업이나 가상서버부터 못 쓰게 만들어, 피해자가 " 백업으로 복원하면 되지"라는 대안을 원천 차단하기 위함이다.
2단계 (사용자 업무 문서): 568개의 사무용 문서 확장자 목록(.pdf, .docx, .xlsx, .pptx 등)과 일치하는 파일을 두 번째로 암호화한다. 회사 운영에 직접 영향을 주는 계약서·재무자료·발표자료 등을 두 번째로 망가뜨려, 피해자가 몸값을 낼 수밖에 없게 한다.
3단계 (그 외 모든 파일): 마지막 단계에서는 확장자 목록 검사를 건너뛰고, 시스템 동작에 꼭 필요한 9개 확장자(.exe, .sys, .dll 등 실행 파일이나 시스템 파일)를 제외한 나머지 모든 파일을 암호화한다. 누락된 파일이 없도록 마무리하는 단계다. 이미 1·2단계에서 암호화되어 .bianlian 확장자가 붙은 파일은 자동으로 건너뛰기 때문에 같은 파일이 두 번 암호화되는 일은 없다.

<그림 2> 단계별 분기 처리 코드 (1단계 / 2단계 / 3단계)

 

 

 

AES-256-CBC 암호화 (고정된 암호화 키)

BianLian이 파일을 암호화하는 방식은 AES-256-CBC다. AES-256은 32바이트(256비트) 길이의 비밀번호로 데이터를 암호화하는 방식으로, 현재 가장 널리 쓰이는 표준 암호화 알고리즘 중 하나다. 보통 은행이나 정부 기관도 사용할 만큼 안전하다고 알려져 있지만, 안전한 것은 "비밀번호를 모를 때"의 이야기다. 본 샘플의 결정적인 특징은 이 비밀번호와 초기화 값(IV, 같은 비밀번호로도 매번 다른 결과를 만들기 위해 섞어 넣는 추가 값)이 악성코드 안에 그대로 박혀 있다는 점이다. 본 샘플은 Key와 IV가 바이너리 내부에 정적으로 포함되어 있어, 파일별 고유 키를 생성·관리하는 방식보다 단순한 구조를 가진다. 다만 Key/IV를 확보하지 못한 일반 피해 환경에서는 이 사실만으로 복호화를 기대하기 어렵다.

<그림 3> AES-256-CBC 암호화 호출 코드

 

암호화 요소 확인 위치 검증 결과
AES-256 키 대칭키 암호화 방식의 비밀번호 633a56d0…b62 (32바이트) 정적 데이터 영역 빌드 시점에 박혀 있음 (변경 없음)
AES-CBC IV 초기화 값 (매번 다른 결과 생성용) fc55a60a…dab (16바이트) 정적 데이터 영역 동적 생성 코드 없음
헤더 오프셋 파일 종류 식별 정보 보존 9바이트 (정적 상수) 분석 도구 직접 확인 파일 첫 9바이트는 암호화 제외

<표 1> AES-256-CBC 정적 키/IV 검증 결과

 

 

부분 암호화

BianLian은 파일을 처음부터 끝까지 모두 암호화하지 않고, 파일의 일부만 골라서 암호화하는 부분 암호화(Intermittent Encryption) 방식을 사용한다. 모든 데이터를 다 잠그면 시간이 너무 오래 걸리지만, 파일의 핵심 부분만 망가뜨려도 사용자는 파일을 열 수 없게 되기 때문이다. "파일을 정상적으로 못 쓰게 만든다"는 목적과 "빠른 처리 속도"를 동시에 잡기 위한 최적화다. 본 샘플은 파일 크기에 따라 다섯 단계로 비율을 다르게 적용한다. 1MB 이하의 작은 파일은 전체(100%)를 암호화하고, 1MB~1GB 범위는 약 20%, 1GB~100GB 범위는 약 0.1%, 101GB~499GB 범위는 약 0.015%, 500GB를 초과하는 초대용량 파일은 약 0.005%만 암호화한다. 예를 들어 100GB 규모의 가상머신 디스크 파일은 약 100MB만 암호화되지만, 주요 구간이 훼손되어 정상 사용이 어렵다.

<그림 4> 파일 크기별 5단계 부분 암호화 비율 분기 코드

 

 

 

조각별 연결 고리 부재

BianLian은 파일을 작은 조각(청크)들로 나누어 차례로 암호화한다. 정상적인 CBC 방식이라면 첫 조각의 암호문이 두 번째 조각 암호화에 영향을 주고, 두 번째가 다시 세 번째에 영향을 주는 식으로 "고리"처럼 연결되어, 같은 내용이라도 위치마다 다른 암호문이 만들어진다. 그런데 BianLian은 매 조각마다 처음부터 다시 시작하면서 항상 같은 초기화 값을 사용하므로 이 연결 고리가 끊겨 있다. 그 결과 파일 안에서 같은 내용을 가진 부분은 어디에 있든 항상 똑같은 모양의 암호문으로 변환된다. 일반적으로 파일에는 머리말이나 반복되는 빈 공간 같은 "이미 알려진 내용"이 들어 있는데, 이를 단서로 패턴 분석을 시도할 수 있는 구조적 약점이다.

 


 

화이트리스트 기반 선택적 암호화

본 샘플 기준으로 BianLian은 모든 파일을 무차별로 암호화하지 않는다. 화이트리스트(특정 조건에 해당하면 처리에서 제외하는 "안전 목록")를 두 종류 운영한다.
첫째, 폴더 이름에 특정 키워드가 들어 있으면 해당 폴더 전체를 건너뛴다.
① Windows: 운영체제 자체가 들어 있는 폴더로, 손상 시 PC 부팅 불가 → 피해자가 랜섬노트조차 열어볼 수 없게 되는 상황 방지.
② AppData\Local\Microsoft: Microsoft 사용자 설정 일부 보호.
③ Webroot, ④ Sophos: 두 가지 모두 백신 제품명으로, 백신과 충돌해 암호화가 도중에 멈추는 일을 피하기 위한 회피 동작.
둘째, 파일 단위로는 9개 확장자(.exe .sys .drv .dll .html .txt .bianlian .mui .lnk)와 정확히 일치하면 그 파일을 건너뛴다. 시스템 실행 파일과 윈도우 동작에 필요한 파일은 보호하고, .txt와 .html은 랜섬노트가 정상적으로 표시되도록 남겨두며, 이미 처리된 파일(.bianlian)은 중복 암호화를 방지한다. 확장자 비교는 파일명 끝부분 기준으로 수행되며, 이미 .bianlian 확장자가 붙은 파일은 제외 목록에 의해 재처리되지 않는다.

<그림 5> 폴더 이름 화이트리스트 검사 코드

 

 

<그림 6> 파일 확장자 화이트리스트 검사 코드

 

 

확장자
exe, sys, drv, dll, html, txt, bianlian, mui, lnk

<표 2> 제외 확장자 목록

 

 

디렉터리
Windows, AppData\Local\Microsoft, Webroot, Sophos

<표 3> 제외 디렉터리 목록

 

 

 

동시 처리 모델 — 최대 200개 파일 동시 암호화

BianLian은 한 번에 한 파일씩 차례로 처리하지 않고, 동시에 여러 파일을 병렬로 처리한다. Go 언어의 고루틴(매우 가벼운 동시 실행 단위로, 일반 스레드보다 훨씬 적은 자원으로 수천 개를 동시에 띄울 수 있다)을 활용해 최대 200개의 파일을 동시에 암호화한다. 폴더 탐색·하위 폴더 진입·개별 파일 암호화 모든 단계가 동시 진행되며, 메모리 누수 없이 깔끔하게 종료되도록 안전장치도 함께 걸려 있다. 이러한 병렬 처리 구조는 멀티코어 CPU 성능을 활용해 대규모 환경에서도 빠른 파일 훼손을 유발할 수 있다.

 

 

랜섬노트 

본 샘플 기준으로 랜섬노트(피해자에게 협박 내용을 전달하는 안내문)는 BianLian이 폴더에 진입할 때마다 그 폴더에 "Look at this instruction.txt"라는 이름으로 생성된다. 본문은 일곱 부분으로 구성되어 있다.
① 협박 문구
② Tox(공격자가 자주 쓰는 익명 메신저로, 중앙 서버 없이 P2P로 동작해 추적이 어려움) 사용 안내
③ 공격자의 Tox ID
④ 대안 이메일 주소
⑤ 피해자 식별 ID(공격자가 어느 회사로부터의 연락인지 구분하기 위한 고유 번호로, 빌드마다 다른 값이 박혀 있음)
⑥ 데이터 유출 협박 문구
⑦ Tor(특수 브라우저로만 접속할 수 있는 익명 네트워크) 기반 유출 사이트 주소.
랜섬노트는 파일 암호화가 시작되기 전에 먼저 만들어지기 때문에, 피해자는 암호화가 진행되는 도중에도 협박 내용을 즉시 확인할 수 있다.

<그림 7> 피해자 화면에 표시되는 랜섬노트 전문

 

 

암호화 대상 드라이브 선별 (고정 디스크 전용)

본 샘플은 A:\부터 Z:\까지 모든 드라이브 문자를 순차적으로 점검하지만, 실제 암호화 대상에는 GetDriveTypeW 결과가 DRIVE_FIXED(3)인 로컬 고정 디스크만 포함한다. 기본 드라이브 수집 루틴에서는 이동식 드라이브, 네트워크 공유 드라이브, CD/DVD, RAM 디스크가 제외된다.

<그림 8> 고정 디스크 판별 코드 (드라이브 종류 검사)

 

 

파일 한 개를 암호화하는 전체 과정

본 샘플 기준으로 BianLian이 한 파일을 암호화할 때의 흐름은 다음과 같다.
① 대상 파일을 "읽기·쓰기" 모드로 열기
② 파일 크기 확인
③ 파일 크기에 따른 암호화 블록 크기 동적 결정 — 작은 파일은 16바이트, 큰 파일은 최대 4MB
④ 5단계 비율표 기반 암호화 반복 횟수 산정
⑤ 정해진 횟수만큼 파일 내 특정 위치를 선택하여 AES-256-CBC로 암호화 후 원본 위치에 덮어쓰기 (in-place 방식으로 추가 디스크 공간 불필요, 고속 처리)
⑥ 파일 앞 9바이트(파일 시그니처 영역) 보존 — 운영체제의 파일 형식 식별 정보로 의도적으로 미수정
⑦ 작업 완료 후 파일 닫기 및 확장자에 ".bianlian" 추가 (예: 보고서.docx → 보고서.docx.bianlian)

 

 


자기삭제 (실행 후 흔적 제거)

1·2·3단계의 모든 암호화가 끝나면 BianLian은 자기 자신을 삭제한다. 자기 실행 파일의 위치를 알아낸 뒤, Windows의 명령 프롬프트(cmd.exe)에 "이 파일을 지워라"는 명령을 던져 놓고는 본인은 곧바로 종료된다. 명령을 받은 cmd.exe는 별도 프로세스로 실행되어 BianLian 본체 파일을 삭제한다. 이는 Windows에서 가장 흔히 쓰는 자기삭제 방식이지만, 침해사고 조사관이 사후에 원본 악성코드를 확보하는 것을 어렵게 만들기에는 충분하다. 결과적으로 실행, 파일 암호화, 자기삭제로 이어지는 흐름이 완성된다.

<그림 9> 명령 프롬프트를 이용한 자기삭제 호출 코드

 

처리 단계 AES-256-CBC (대칭키 암호화)
파일 열기 원본 파일 열기 (읽기·쓰기 모드)
블록 크기 계산 파일 크기에 따라 16B~4MB 사이로 자동 결정
반복 횟수 5단계 부분 암호화 비율 적용
암호화 처리 읽기 → 암호화 → 같은 위치에 덮어쓰기
헤더 보존 파일 첫 9바이트(파일 종류 식별 정보)는 보존
확장자 변경 원본 파일명 끝에 .bianlian 추가

<표 4> 파일 암호화 단계별 처리 요약

 

<그림 10> 파일 암호화 반복문 코드

 

 

본 샘플 기준으로 BianLian은 다른 랜섬웨어들과 비교했을 때 매우 단순한 구조의 식별 방식을 사용한다. 암호화가 완료된 파일은 모두 동일하게 " .bianlian" 확장자가 추가 되어있다.
다른 랜섬웨어들은 보통 암호화된 파일 안에 "이 파일은 이런 키로 잠겼다"는 표식이나 파일 끝에 추가 데이터를 덧붙이지만, 본 샘플은 그런 정보를 파일에 전혀 기록하지 않는다. 파일 크기도 변하지 않는다(원본 길이가 그대로 유지된다). 그 자리에서 직접 덮어쓰는 방식이기 때문이다. 이렇게 단순하게 처리할 수 있는 이유는, 같은 빌드로 암호화된 모든 파일이 동일한 비밀번호 한 개로 잠기기 때문에 파일별로 따로 정보를 기록할 필요가 없기 때문이다. 또한 ".bianlian"이 화이트리스트(보호 목록)에 포함되어 있어, 1단계에서 이미 처리된 파일이 2·3단계에서 다시 처리되는 일도 자연스럽게 방지된다.

<그림 11> 암호화 전후 파일명 비교 (.bianlian 확장자가 추가됨)

 

 

 

 

4) 결론

본 보고서에서 분석한 샘플은 Go 언어로 만들어진 Windows용 BianLian 랜섬웨어 변종 한 건이다. 별도의 다운로더나 도우미 프로그램 없이 그 자체로 모든 동작을 수행하는 단일 실행 파일이며, 분석 방해 기능은 본 샘플의 사용자 작성 코드에서 발견되지 않았다. 또한 본 샘플의 사용자 작성 코드에서는 볼륨 섀도 복사본(VSS) 삭제, 보안 프로세스 종료, 시스템 서비스 중지, 이벤트 로그 삭제 등 일반적인 복구 방해 루틴도 확인되지 않았다. 대신 가상디스크·백업 파일을 가장 먼저 망가뜨리는 3단계 우선순위 암호화 구조와, 파일 크기에 따라 일부만 골라 암호화하는 5단계 부분 암호화 비율이 정교하게 구현되어 있다. 즉 " 숨기는 기능"이나 "복구를 차단하는 부가 기능" 보다는 "빠르게 망가뜨리는 핵심 기능" 에 집중한 변종이다.


동작 흐름을 정리하면, 폴더에 진입할 때마다 협박 안내문("Look at this instruction.txt")을 먼저 만들고, 그 후 폴더 안의 파일들을 AES-256-CBC 방식으로 일부만 잘라 암호화한 뒤 파일 이름 끝에 ".bianlian"을 붙여 변경한다. 비밀번호와 초기화 값이 악성코드 안에 그대로 박혀 있고 조각 간 연결 고리가 끊겨 있어 암호학적으로는 권장되지 않는 설계이지만, 백업 파일부터 우선 망가뜨리고 한 번에 최대 200개 파일을 동시에 처리하기 때문에 실제 회사 환경에서는 매우 빠르게 큰 피해를 입힐 수 있다.


방어 관점에서는 다음 여섯 가지 행위를 조합해서 감지하는 것이 효과적이다.
① 한 프로세스가 짧은 시간 안에 A부터 Z까지 모든 드라이브 종류를 차례로 점검하는 행위.
② 같은 프로세스가 짧은 시간에 수많은 파일의 이름 끝에 ".bianlian"을 붙이는 일괄 변경 행위.
③ 암호화 대상 경로 내 다수 폴더에 "Look at this instruction.txt" 파일이 반복 생성되는 행위.
④ Go 언어로 만들어진 단일 실행 파일이 짧은 시간에 수많은 파일을 똑같은 위치에서 "읽기 → 쓰기"를 반복하는 행위.
⑤ 실행 직후 명령 프롬프트(cmd.exe)로 자기 자신을 삭제하는 행위.
⑥ “C:\Users\Public\MicrosoftEdge_38728293_logs.txt” 파일 생성. 해당 파일은 -debug 옵션 사용 시 확인되는 조건부 실행 흔적으로, 다른 IOC 및 행위 지표와 함께 판단해야 한다.


BIanLian은 단순한 구조의 변종이라 위 행위 패턴이 EDR(엔드포인트 보안 솔루션) 표준 행위 탐지 규칙으로 식별 가능한 단서가 되지만, 다른 변종은 우회 기능이 추가되었을 수 있으므로 단일 시그니처에 의존하기보다 여러 행위를 조합해 감지하는 방식이 권장된다.

 


 

 

 

5) IOCs

본 분석 샘플 SHA256
442e6fedbdad927ee69caa94e314df33896c968ca67e271f9f3add580e427982


관련 BianLian 변종 SHA256
1fd07b8d1728e416f897bef4f1471126f9b18ef108eb952f4b75050da22e8e43
f7a3a8734c004682201b8873691d684985329be3fcdba965f268103a086ebaad
eaf5e26c5e73f3db82cd07ea45e4d244ccb3ec3397ab5263a1a74add7bbcb6e2
da7a959ae7ea237bb6cd913119a35baa43a68e375f892857f6d77eaa62aabbaf
de31a4125eb74d0b7cbf2451b40fdb2d66d279a8b8fd42191660b196a9ac468f


공격자 통신 채널
Tor 유출 사이트: http://bianlianlbc5an4kgnay3opdemgcryg2kpfcbgczopmm3dnbz3uaunad[.]onion
swikipedia@onionmail[.]org (이메일)
Tox: A4B3B0845DA242A64BF17E0DB4278EDF85855739667D3E2AE8B89D5439015F07E81D12D767FC

 


 

 

 

6) 참고 자료

 

 

 

김민수

위협분석센터

ms.kim2@piolink.com

  • 목록
문의