상세 컨텐츠

본문 제목

Trojan.Ransom.Hermes 악성코드 분석 보고서

악성코드 분석 리포트

by 알약(Alyac) 2018. 2. 21. 15:28

본문

안녕하세요? 이스트시큐리티입니다.


이번에 등장한 랜섬웨어는 ‘Hermes’ 2.0 버전으로 기존 ‘Hermes’ 랜섬웨어의 변종입니다. 랜섬웨어 특성에 따라 악성코드 제작자는 사용자의 중요 파일을 암호화한 뒤 복호화 대가로 비트코인 결제를 유도하여 금전적인 이득을 취합니다.


기존 버전에서 파일 암호화가 진행된 이후‘.hermes’확장자를 추가하던 것과 달리 별도의 확장자를 추가하지 않는 것이 특징입니다. 또한 암호화 대상 확장자에는 ‘.hwp’가 포함되어 있어 국내 사용자들의 피해가 우려됩니다. 


본 분석 보고서에서는 ‘Heremes’ 2.0 랜섬웨어를 상세 분석 하고자 합니다.



악성코드 상세 분석


1) 안티 디버깅


Hermes 랜섬웨어는 정상적인 디버깅을 방해하기 위하여 프로세스 실행 시간을 이용한 안티 디버깅 기법을 적용했습니다. GetSystemTime 함수(시스템의 현재 시간을 1/1000초 단위로 측정)를 이용하여 처음 측정한 시간과 나중에 측정한 시간의 시간차를 이용하여 디버깅 중인지를 판별합니다.


[그림 1] 프로세스 실행 시간차를 이용한 안티 디버깅



2) 자가 복제 및 자동실행 등록


현재 랜섬웨어가 동작하는 시스템 운영체제 정보를 확인하고 특정 경로에 원본 파일을 숨김 파일로 복제합니다. 복제되는 파일 이름은 ’winlogon.exe’ 으로 시스템에서 정상적으로 사용하는 프로세스 이름입니다. 이는 사용자에게 정상 프로세스로 보이도록 위장하기 위함입니다.


[그림 2] 자가 복제 및 숨김 파일 설정


시스템 운영체제에 따라 원본 파일이 복제되는 경로는 다음과 같습니다.


 파일 복제 경로

 Windows XP

 \\Documents and Settings\\All Users\\

 Windows XP가 아닌 경우

 \\users\\Public\\

[표 1] 시스템 운영체제에 따른 파일 복제 경로


랜섬웨어 실행 중 PC의 종료 및 재부팅으로 인한 암호화 실패를 방지하기 위해 자가 복제한 ‘winlogon.exe‘ 파일을 자동 실행되도록 레지스트리에 추가합니다. 다음과 같은 명령어를 이용하여 레지스트리에 추가되며 운영체제의 비트 환경에 따라 옵션이 추가됩니다.


 레지스트리 자동 실행 등록

 32비트

 "REG ADD \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"sysrep\" /t REG_SZ /d \""

 64비트

 "REG ADD \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"sysrep\" /t REG_SZ /d \"" /reg:64

[표 2] 운영체제 비트 환경에 따른 레지스트리 자동 실행 등록


레지스트리 편집기를 통해 ‘sysrep’ 이름으로 등록된 키 값을 확인할 수 있습니다. 


[그림 3] ‘sysrep’ 자동 실행 등록



3) 볼륨섀도우 복사본 삭제


악성코드 제작자는 암호화된 파일의 복구를 막기 위해 시스템에 내장된 볼륨섀도우 복사본을 삭제합니다. C 드라이브에서 H 드라이브까지 복사본과 관련된 모든 확장자를 대상으로 삭제를 시도합니다. 이 모든 작업은 ‘shadow.bat’ 배치파일을 생성하여 실행합니다.



[그림 4] 볼륨섀도우 복사본 삭제 명령어


다음과 같은 확장자를 가진 파일은 모두 삭제합니다.


*.VHD, *.bac, *.bak, *.wbcat, *.bkf. *.Backup, *.backup, *.set, *.win, *.dsk



4) 파일 암호화


현재 시스템에서 사용 가능한 드라이브 탐색 후 암호화 대상 확장자 및 제외 폴더를 비교하여 암호화를 진행합니다.


[그림 5] 사용 가능한 드라이브 탐색 및 암호화 대상 비교


다음과 같은 이름을 가진 폴더는 암호화에서 제외됩니다. 이는 시스템 운영에 필요한 파일들이 포함된 폴더로 암호화로 인해 시스템 오류가 발생하는 것을 방지하기 위함입니다.


[그림 6] 암호화 제외 폴더


다음과 같은 확장자를 가진 파일에 대해서만 암호화가 진행됩니다. 특이사항으로는 확장자 비교시 소문자와 대문자를 모두 확인하는 특징이 있습니다.


[그림 7] 암호화 대상 확장자 비교 루틴


암호화 대상 확장자는 총 812개로 다음과 같습니다. 


 암호화 대상 확장자

 tif, php, 1cd, 7z, cd, 1cd, dbf, ai, arw, txt, doc, docm, docx, zip, rar, xlsx, xls, xlsb, xlsm, jpg, jpe, jpeg, bmp, db, eql, sql, adp, mdf, frm, mdb, odb, odm, odp, ods, dbc, frx, db2, dbs, pds, pdt, pdf, dt, cf, cfu, mxl, epf, kdbx, erf, vrp, grs, geo, st, pff, mft, efd, 3dm, 3ds, rib, ma, max, lwo, lws, m3d, mb, obj, x, , x3d, c4d, fbx, dgn, dwg, 4db, 4dl, 4mp, abs, adn, a3d, aft, ahd, alf, ask, awdb, azz, bdb, bib, bnd, bok, btr, bak, cdb, ckp, clkw, cma, crd, dad, daf, db3, dbk, dbt, dbv, dbx, dcb, dct, dcx, ddl, df1, dmo, dnc, dp1, dqy, dsk, dsn, dta, dtsx, dxl, eco, ecx, edb, emd, fcd, fic, fid, fil, fm5, fol, fp3, fp4, fp5, fp7, fpt, fzb, fzv, gdb, gwi, hdb, his, ib, idc, ihx, itdb, itw, jtx, kdb, lgc, mud, mwb, s3m, myd, ndf, ns2, ns3, ns4, nsf, nv2, nyf, oce, oqy, ora, orx, owc, owg, oyx, p96, p97, pan, pdb, pdm, phm, pnz, pth, pwa, qpx, qry, qvd, rctd, rdb, rpd, rsd, sbf, sdb, sdf, spq, sqb, stp, str, tcx, tdt, te, tmd, trm, udb, usr, v12, vdb, vpd, wdb, wmdb, xdb, xld, xlgc, zdb, zdc, cdr, cdr3, ppt, pptx, abw, act, aim, ans, apt, asc, ase, aty, awp, awt, aww, bad, bbs, bdp, bdr, bean, bna, boc, btd, cnm, crwl, cyi, dca, dgs, diz, dne, docz, dot, dotm, dotx, dsv, dvi, dx, eio, eit, emlx, epp, err, etf, etx, euc, faq, fb2, fbl, fcf, fdf, fdr, fds, fdt, fdx, fdxt, fes, fft, flr, fodt, gtp, frt, fwdn, fxc, gdoc, gio, gpn, gsd, gthr, gv, hbk, hht, hs, htc, hwp, hz, idx, iil, ipf, jis, joe, jp1, jrtf, kes, klg, knt, kon, kwd, lbt, lis, lit, lnt, lp2, lrc, lst, ltr, ltx, lue, luf, lwp, lyt, lyx, man, map, mbox, me, mell, min, mnt, msg, mwp, nfo, njx, now, nzb, ocr, odo, odt, ofl, oft, ort, ott, p7s, pfs, pfx, pjt, prt, psw, pu, pvj, pvm, pwi, pwr, qdl, rad, rft, ris, rng, rpt, rst, rt, rtd, rtf, rtx, run, rzk, rzn, saf, sam, scc, scm, sct, scw, sdm, sdoc, sdw, sgm, sig, sla, sls, smf, sms, ssa, stw, sty, sub, sxg, sxw, tab, tdf, tex, text, thp, tlb, tm, tmv, tmx, tpc, tvj, u3d, u3i, unx, uof, uot, upd, utf8, utxt, vct, vnt, vw, wbk, wcf, wgz, wn, wp, wp4, wp5, wp6, wp7, wpa, wpd, wpl, wps, wpt, wpw, wri, wsc, wsd, wsh, wtx, xdl, xlf, xps, xwp, xy3, xyp, xyw, ybk, yml, zabw, zw, abm, afx, agif, agp, aic, albm, apd, apm, apng, aps, apx, art, asw, bay, bm2, bmx, brk, brn, brt, bss, bti, c4, cal, cals, can, cd5, cdc, cdg, cimg, cin, cit, colz, cpc, cpd, cpg, cps, cpx, cr2, ct, dc2, dcr, dds, dgt, dib, djv, djvu, dm3, dmi, vue, dpx, wire, drz, dt2, dtw, dvl, ecw, eip, exr, fal, fax, fpos, fpx, g3, gcdp, gfb, gfie, ggr, gif, gih, gim, spr, scad, gpd, gro, grob, hdp, hdr, hpi, i3d, icn, icon, icpr, iiq, info, ipx, itc2, iwi, j, , j2c, j2k, jas, jb2, jbig, jbmp, jbr, jfif, jia, jng, jp2, jpg2, jps, jpx, jtf, jwl, jxr, kdc, kdi, kdk, kic, kpg, lbm, ljp, mac, mbm, mef, mnr, mos, mpf, mpo, mrxs, myl, ncr, nct, nlm, nrw, oc3, oc4, oc5, oci, omf, oplc, af2, af3, asy, cdmm, cdmt, cdmz, cdt, cgm, cmx, cnv, csy, cv5, cvg, cvi, cvs, cvx, cwt, cxf, dcs, ded, dhs, dpp, drw, dxb, dxf, egc, emf, ep, eps, epsf, fh10, fh11, fh3, fh4, fh5, fh6, fh7, fh8, fif, fig, fmv, ft10, ft11, ft7, ft8, ft9, ftn, fxg, gem, glox, hpg, hpgl, hpl, idea, igt, igx, imd, ink, lmk, mgcb, mgmf, mgmt, mt9, mgmx, mgtx, mmat, mat, otg, ovp, ovr, pcs, pfv, pl, plt, vrml, pobj, psid, rdl, scv, sk1, sk2, ssk, stn, svf, svgz, sxd, tlc, tne, ufr, vbr, vec, vml, vsd, vsdm, vsdx, vstm, stm, vstx, wpg, vsm, xar, yal, orf, ota, oti, ozb, ozj, ozt, pal, pano, pap, pbm, pc1, pc2, pc3, pcd, pdd, pe4, pef, pfi, pgf, pgm, pi1, pi2, pi3, pic, pict, pix, pjpg, pm, pmg, pni, pnm, pntg, pop, pp4, pp5, ppm, prw, psdx, pse, psp, ptg, ptx, pvr, px, pxr, pz3, pza, pzp, pzs, z3d, qmg, ras, rcu, rgb, rgf, ric, riff, rix, rle, rli, rpf, rri, rs, rsb, rsr, rw2, rwl, s2mv, sci, sep, sfc, sfw, skm, sld, sob, spa, spe, sph, spj, spp, sr2, srw, ste, sumo, sva, save, ssfn, t2b, tb0, tbn, tfc, tg4, thm, tjp, tm2, tn, tpi, ufo, uga, vda, vff, vpe, vst, wb1, wbc, wbd, wbm, wbmp, wbz, wdp, webp, wpb, wpe, wvl, x3f, y, , ysp, zif, cdr4, cdr6, cdrw, ddoc, css, pptm, raw, cpt, pcx, pdn, png, psd, tga, tiff, tif, xpm, ps, sai, wmf, ani, flc, fb3, fli, mng, smil, svg, mobi, swf, html, csv, xhtm, dat


확장자 비교 후 암호화 대상 파일로 확인되면 중복감염을 막기 위해 이미 감염된 파일인지를 확인합니다. 이미 감염된 파일은 파일 사이즈 끝에서 112바이트 위치한 곳에 ‘HERMES’ 시그니쳐가 삽입되어 있습니다. ‘HERMES’ 시그니쳐가 확인되지 않은 파일에 대해서만 암호화를 진행합니다.


[그림 8] 감염여부 확인 및 중복감염 방지


다음과 같이 암호화가 진행된 파일에서 ‘HERMES‘ 시그니쳐 를 확인할 수 있습니다.


[그림 9] 암호화된 파일 내 ‘HERMES’ 시그니쳐


암호화 대상 파일은 CryptEncrypt 함수를 통해 AES_256 대칭키로 암호화됩니다. 데이터는 16바이트 블록 단위로 암호화가 되고, 남은 공간은 특정 padding 값으로 채워 16의 배수를 만듭니다. 데이터 암호화 후 6바이트의 ‘HERMES’ 시그니쳐와 10C바이트의 암호화된 AES 대칭키 정보가 추가됩니다. 다음은 암호화 코드의 일부입니다.


[그림 10] 파일 암호화 코드의 일부


암호화된 파일은 다음과 같은 구조를 가집니다.


[그림 11] 암호화된 파일 구조



5) 랜섬 노트 및 공개키, 사용자 정보 파일 생성


다음과 같이 C:\User\public\ 폴더 하위에 자가 복제된 파일 외에도 랜섬노트와, ‘PUBLIC’, ‘UNIQUE_ID_NOT_REMOVE’ 파일이 추가 생성됩니다.


[그림 12] public 폴더 내 생성된 파일들


① 암호화에 사용된 RSA 공개키가 ‘PUBLIC’ 이름으로 저장됩니다.

 

[그림 13] PUBLIC 파일 생성


② 감염된 사용자를 식별할 ID 및 키 정보가 포함된 파일을 ‘UNICQUE_ID_NOT_REMOVE’ 이름으로 저장됩니다. 

 

[그림 14] UNIQUE_ID_DO_NOT_REMOVE 파일 생성


③ 파일 암호화 후 사용자에게 감염 사실과 복호화를 위한 방법을 안내하는 랜섬노트를 생성하고 실행합니다. 


메모리에 인코딩되어 있는 HTML 코드와 Email 정보를 XOR을 이용하여 한 바이트씩 디코딩합니다. 디코딩된 데이터는 최종 ‘DECRYPT_INFORMATION.html‘ 파일로 생성되어 자동 실행됩니다. 다음은 HTML 코드를 디코딩하는 코드입니다.


[그림 15] 인코딩된 HTML 코드 XOR 디코딩


다음은 인코딩된 Email 주소를 디코딩하는 코드입니다. 디코딩된 Email 주소는 디코딩된 HTML 코드 사이에 추가되어 최종 HTML 파일을 완성시킵니다.


[그림 16] 인코딩된 Email 주소 XOR 디코딩


다음은 디코딩된 Email 주소입니다.


 Email 주소

 Primary Email

 BM-2cUGvXP5PUnnbTBwLfk5cTDYQL55PX4kaK@bitmessage.ch

 Reserve Email

 BM-2cWSYhFXhuHyLGLusdmnXP7TNpCW6KEu1z@bitmessage.ch

[표 4] 디코딩된 Email 정보


완성된 HTML 파일은 다음과 같은 구조를 가집니다.


[그림 17] HTML파일 코드 구조


완성된 ‘DECRYPT_INFORMATION.html‘ 파일은 암호화된 폴더마다 생성되며, 다음과 같이 ’allkeeper’ 이름으로 레지스트리에 자동 실행 등록됩니다. 


[그림 18] ‘DECRYPT_INFORMATION.html‘ 파일 레지스트리 자동 실행 등록


다음은 랜섬노트 화면으로 악성코드 제작자는 복호화를 위한 비용으로 비트코인 결제를 유도합니다. 이를 위해 이메일을 통해 접촉하길 요구하고 “UNIQUE_ID_NOT_REMOVE” 파일도 함께 첨부하라고 안내합니다. 또한, 비트코인 결제에 앞서 정상적으로 복호화가 성공한다는 것을 보여주기 위해 3개의 파일을 대상으로 복호화를 무료로 진행합니다.

 

[그림 19] 랜섬노트 화면


모든 파일 암호화가 종료된 이후에는 등록된 레지스트리를 삭제합니다.


[그림 20] ‘sysrep’ 레지스트리 삭제



6) C&C


파일 암호화가 완료된 시점에 감염된 PC로부터 생성된 랜덤 ID값을 기반으로 C&C연결 시도합니다. 분석 시점에 해당 서버는 차단되었지만 악성코드 제작자는 접속된 ID를 기반으로 감염자의 통계 및 정보를 수집하기 위함으로 보입니다.


http://185.162.10.7/text_area/vic.php?ID={랜덤10자리}


[그림 21] C&C 접속


[그림 22] C&C 접속




결론


이번 ‘Hermes’ 랜섬웨어 2.0 버전은 기존 버전과 다르게 파일 암호화 후 별도의 확장자를 추가하지 않습니다. 확장자의 변화가 없기 때문에 사용자는 어떤 파일이 암호화 됐는지 빨리 인지하기 어렵습니다. 


파일 암호화 대상 확장자 중에는 국내에서 사용하는 ‘.hwp’파일이 포함되어 있어 랜섬웨어 감염 시 큰 피해가 발생할 수 있습니다. 


따라서 사용자들은 시스템 운영체제와 애플리케이션을 항상 최신 업데이트 버전으로 유지해야 합니다. 또한 중요한 자료는 외부 저장 매체에 백업하는 습관을 들이고, 최신 버전의 백신으로 자주 검사하는 습관이 필요하겠습니다. 


현재 알약에서는‘Hermes’랜섬웨어를 Trojan.Ransom.Hermes 탐지명으로 진단하고 있습니다. 



관련글 더보기

댓글 영역