본문 바로가기

Analysis

66. BianLian ransomware

최근 BianLian 랜섬웨어가 활발하게 활동중이다. lockbit, play 랜섬웨어등과 함께 일주일에 최소 2개 이상 감염을 일으키고 있는 것으로 보인다. 본 글에서는 해당 랜섬웨어 대해 분석한다.

* sha256 : eaf5e26c5e73f3db82cd07ea45e4d244ccb3ec3397ab5263a1a74add7bbcb6e2

BianLian 랜섬웨어 감염 대상

 

아래 도식도는 BianLian 랜섬웨어의 수행을 나타낸다. BianLian 랜섬웨어는 RDP를 통해 피해자 PC에 접근하며 피해자 PC에 접근하면 데이터를 탈취하고 해당 데이터를 C2로 전송하는 것으로 보여진다. 이후 BianLian을 실행해 피해자 PC의 파일들을 암호화한다.

BianLian 도식도

 

 

BianLian 랜섬웨어는 Go 언어로 제작되었다. 해당 파일은 1.15.0 이상의 Go 언어로 제작되었다. Go 언어는 멀티플랫폼 컴파일을 지원한다. 따라서, BianLian 랜섬웨어는 피해자의 OS에 구애받지 않고 랜섬웨어 감염을 수행할 수 있다는 특징을 가진다.

파일 정보

 

아래 그림은 BianLian 랜섬웨어의 메인 함수이다. 특정 값(byte_64B7E7)이 설정될 경우, 피해 PC의 Public 폴더 아래에 MicrosoftEdge_38728293_logs.txt 파일을 생성하고, 메모리의 값을 로그로 남긴다. 해당 루틴의 목적은 정확히 확인되지는 않았지만, 피해자 정보 식별등에 사용될 것으로 추측된다.

메인 함수
MicrosoftEdge log 파일 생성

 

이후 main_ScanForFiles 함수를 통해 피해자 PC에 존재하는 파일들을 스캔 및 암호화 과정을 수행한다.

main_ScanForFiles

 

가장 먼저 피해자 PC에 존재하는 드라이브들의 정보를 모두 가져온다. 또한, 가져온 드라이브의 타입을 식별한다.

GetDrives 함수
드라이브 타입 식별

 

이후 드라이브의 디렉토리에서 파일을 스캔하는 등의 행위를 수행하는데, 각각 main_ProcessDirectory_func1(), main_ProcessDirectory_func2(), main_ProcessDirectory_func3() 를 사용한다.

  - main_ProcessDirectory_func2() : 파일 암호화 수행

  - main_ProcessDirectory_func3() : 랜섬노트 생성

ProcessDirectory_func1()
ProcessDirectory_func2()
ProcessDirectory_func3()

 

파일 암호화에 ProcessDirectory_func2() 함수가 사용된다. 암호화에 앞서 가져온 파일의 확장자가 무엇인지를 확인하며, 암호화 대상 확장자 및 암호화 제외 확장자가 아니면 암호화를 수행한다. 파일 암호화는 main_Encrypt() 함수가 암호화 루틴으로 수행되며 해당 함수 내부에서 AES-CBC 형태의 암호화 알고리즘을 사용해 파일을 암호화한다.

파일 확장자 확인
main_Encrypt 함수
AES-CBC 모드

 

 

아래는 암호화 대상 확장자이다.

.abu1, .acad, .aepx, .ants, .asdb, .avhd, .awbs, .awdb, .bak1, .bak3, .bakx, .bdoc, .bina, .bkpi, .bkup, .bmpr, .book, .bpsd, .c000, .c1dx, .cddz, .cidb, .cptx, .cwdb, .dcmd, .devx, .djvu, .dmmx, .docm, .doct, .docx, .dotm, .dotx, .drmz, .dsdb, .dstf, .ecbk, .ecfg, .eddx, .edoc, .elfo, .emix, .emlx, .emmx, .enex, .epdf, .epub, .etng, .extz, .ezpx, .f+db, .fcdt, .fmdb, .fmpr, .fodp, .fodt, .fpbf, .ftil, .ftmb, .gbck, .gexf, .gsba, .help, .hkdb, .hlog, .html, .htri, .ibak, .icbu, .idb2, .idml, .iflv, .indb, .indd, .indt, .indx, .inld, .ipdb, .isam, .ispx, .itmz, .iv2i, .jlqm, .json, .kpdx, .ldif, .list, .lucy, .lutx, .mail, .marc, .mbak, .mbkp, .mbox, .mbsb, .mcdb, .mcdx, .mcsv, .mdbx, .mind, .mmap, .mmdf, .mmsw, .mppx, .mscx, .mshc, .mshi, .msim, .msor, .muse, .mxfd, .n000, .nbak, .nbib, .nope, .note, .npdf, .nppe, .nspe, .nwdb, .oedb, .ole2, .oplx, .orig, .osbx, .oxps, .p2bp, .pbix, .pchd, .pdbx, .pdf_, .pdfa, .pdfx, .pfsx, .potx, .ppdf, .ppsm, .ppsx, .ppta, .pptm, .pptx, .prjx, .prnx, .prt1, .pvhd, .pwbk, .pzfx, .qbmb, .qcow, .quiz, .raml, .rdlx, .rels, .rman, .rolf, .rptx, .rrpa, .rsdb, .rtfd, .s2db, .s3db, .schd, .show, .sidx, .simp, .smea, .smmx, .snmm, .spba, .stmx, .suml, .sv2i, .swdb, .tmdb, .tofp, .ttbk, .twbx, .twdx, .undo, .vbak, .vbox, .vdb3, .vfs2, .vfs4, .vhdx, .vmac, .vmba, .vmcx, .vmdk, .vmem, .vmhf, .vmhr, .vmpl, .vmsd, .vmsg, .vmsn, .vmss, .vmtm, .vmxa, .vmxf, .vpc6, .vpc7, .vpdb, .vsdm, .vswp, .wbf1, .wbfs, .wcat, .whtt, .word, .wxmx, .xbrl, .xfdf, .xfdl, .xlsx, .xmdx, .xprj, .xzfx, .zodb, .accdb, .accdc, .accdr, .accdt, .accdu, .accdw, .accft, .avery, .btree, .celtx, .dblib, .email, .event, .fmpsl, .fpage, .gofin, .ichat, .image, .imscc, .iobit, .isdoc, .iwzip, .kseqs, .mrbak, .mrimg, .msdvd, .mshdb, .nrbak, .nvram, .nwbak, .pages, .qcow2, .rmbak, .rpmsg, .saved, .sdxml, .sheet, .snbkp, .swdoc, .vcard, .vmlog, .wbcat, .wpost, .wspak, .xmind, .xmltv, .zap13, .zargo, .3dmbak, .abcdmr, .ashbak, .backup, .bibtex, .blend1, .blend2, .crypt1, .deproj, .drscan, .erbsql, .fadein, .fcstd1, .ffdata, .isdocx, .maildb, .mddata, .mellel, .mozeml, .msnbak, .pdfxml, .prproj, .psafe3, .qb2014, .qb2015, .rpmnew, .scrivx, .sqlite, .syncdb, .vmoapp, .wdseml, .wpostx, .acd-bak, .appdata, .appicon, .appinfo, .ashdisc, .dat_mcr, .dat_old, .keynote, .qbquery, .rpmorig, .rpmsave, .spentry, .sqlite2, .sqlite3, .taxform, .teacher, .uid-zps, .comiclife, .pages-tef, .purgeable, .smsbackup, .vbox-prev, .db-journal, .moz-backup, .qdf-backup, .wacomprefs, .bamboopaper, .infopathxml, .pspautosave, .sparseimage, .ssmssqlproj, .syndarticle, .sparsebundle, .vbox-extpack, .vmf_autosave, .vmdk-converttmp, .quicken2016backup, .quickbooksautodatarecovery

 

아래는 암호화 제외 대상 확장자이다.

.exe, .sys, .drv, .dll, .html, .txt, .bianlian, .mui, .lnk

암호화 제외 대상 확장자

 

또한, 파일 암호화를 수행할 때 특정 폴더는 제외한다. 아래는 암호화 제외 폴더이다.

Windows, Appdata\\Local\\Microsoft, Webroot, Sophos

암호화 제외 폴더

 

이후 파일의 확장자명을 .bianlian으로 변경한다.

확장자명 교체

 

파일 암호화 수행 후에는 각 폴더/경로별로 랜섬 노트를 생성해 파일 암호화를 풀기 위해 돈을 지급할 것을 요구한다. 또한, 랜섬노트 내에서 10일 안에 돈을 지급하지 않을 시, 탈취한 파일을 bianlian 페이지에 공개할 것이라고 협박한다.

랜섬노트 생성 루틴
랜섬노트 내용
생성된 랜섬 노트

 

아래는 랜섬노트의 전체 내용이다.

Your network systems were attacked and encrypted. Contact us in order to restore your data. Don't make any changes in your file structure: touch no files, don't try to recover by yourself, that may lead to it's complete loss.

To contact us you have to download "tox" messenger: https://qtox.github.io/

Add user with the following ID to get your instructions:
A--생략--C

Alternative way: swikipedia@onionmail.org

Your ID: o--생략--w

You should know that we have been downloading data from your network for a significant time before the attack: financial, client, business, post, technical and personal files.
In 10 days - it will be posted at our site http://bianlianlbc5an4kgnay3opdemgcryg2kpfcbgczopmm3dnbz3uaunad.onion with links send to your clients, partners, competitors and news agencies, that will lead to a negative impact on your company: potential financial, business and reputational loses.

 

최종적으로 자신을 삭제하고 행위를 마무리한다.

파일 삭제

 

해당 랜섬웨어를 분석 중 Go 모듈 경로에 "crypt28" 이라는 특징점을 발견하였다. 해당 경로는 공격자의 로컬 경로인 것으로 추정된다. 또한, bianlian 랜섬웨어는 복호화 도구가 공개되어 있기 때문에 복호화가 가능하다. 아마 AES-CBC 키가 유출된 것으로 추정된다.

또한, 랜섬노트에서 10일 안에 돈을 지급하지 않을 시 탈취한 파일들을 유출한다고 협박하고 있는데 랜섬웨어 행위에서는 파일을 먼저 탈취하는 등의 행위를 발견하지는 못했다. bianlian 랜섬웨어 공격자가 RDP 접속을 통해 피해자 PC에서 랜섬웨어를 실행시키는 특징으로 미루어보아 공격자는 RDP 접속 후 파일을 먼저 수동으로 탈취하는 것으로 추측된다.

https://www.nomoreransom.org/ko/decryption-tools.html

반응형