금성121 APT 조직, 스테가노그래피 기법과 스마트폰 노린 퓨전 공격 수행
■ '금성121' 스테가노그래피 결합 멀티플랫폼 공격
안녕하세요?
이스트시큐리티 시큐리티대응센터(이하 ESRC)입니다.
최근 탈북민 지원 분야 대상자를 겨냥한 것으로 추정되는 복합적 APT공격이 국내에서 포착되었습니다.
이번 공격의 특징은 윈도우즈(Windows) 운영체제 및 안드로이드(Android) 스마트폰을 동시에 퓨전으로 노렸다는 점이며, ESRC는 위협배후에 '금성121(Geumseong121)' 해킹그룹이 조직적으로 가담 중임을 확신하고 있습니다.
특히, 공격자는 JPG 이미지 파일로 위장해 악성코드를 은밀하게 삽입하는 이른바 '스테가노그래피(Steganography)' 기법을 활용했습니다.
■ 갈수록 교묘해지는 스피어 피싱(Spear Phishing) 공격 기법
공격자는 악성코드를 타깃에게 전달하기 위해 스피어 피싱(Spear Phishing) 공격벡터를 활용합니다만, 기존처럼 이메일에 악성파일을 첨부하거나, 본문에 직접적인 악성링크를 포함하진 않았습니다.
보안탐지를 최대한 우회하기 위해서 텍스트(TXT) 파일을 첨부했고, 그곳에 다운로드할 수 있는 악성 단축URL을 포함하는 치밀함을 보였습니다.
물론, 이러한 방식은 수신자로 하여금 번거로운 절차로 다운로드를 안할 수도 있지만, 업무적으로 높은 관심분야라면 수동접근을 통해 파일을 로드할 가능성도 배제하긴 어렵습니다.
더불어 1차 이메일부터 바로 공격을 수행하지 않고, 투트랙으로 공격자가 회신을 받은 다음 2차 이메일에서 공격을 본격화합니다.
[그림 1] 투트랙으로 진행된 스피어 피싱(Spear Phishing) 이메일 화면
두번째 전송된 이메일에는 텍스트 파일과 암호화된 이미지 파일 2개(JPGE)가 첨부되어 있습니다.
텍스트 파일에는 다음과 같은 내용이 포함되어 있고, 윈도우즈와 스마트폰을 이용해 단축URL에 접근하도록 유도하고 있습니다.
[그림 2] 이메일에 첨부되어 있던 텍스트 파일 내용
공격 당시 단축URL 주소로 접근하면 드롭박스 경로를 통해 암호화 압축된 EXE 파일과 APK 앱이 다운로드되며, 각각의 파일 모두 악의적인 기능을 수행하게 됩니다.
File Name | MD5 |
JPGE_Viewer.exe | a495caa03c3ce55bd6f68f6839065dff |
Android_JPGE_Viewer.apk | 99b18c6a0072eb97801b630da5e44bf7 |
악성코드는 PE와 APK 형식 모두 해당되며, 사용자가 접속하는 환경에 맞춰 적합한 악성코드를 내려받게 됩니다.
■ 윈도우즈 기반 컴퓨터 이용자를 겨냥한 공격 분석
먼저, 윈도우즈 운영체제용 'JPGE_Viewer.exe' 파일을 실행하면 다음과 같은 화면이 나타나고, 마치 겉으로 보기에는 정상적인 암호화된 JPG 이미지 뷰어처럼 보입니다.
암호화되지 않은 정상적인 JPG 포맷을 오픈하면 'Invalid Foramt.' 이라며 영문식 오타(Format)가 포함된 메시지 창이 출력됩니다. 여기서 흥미로운 점은 이 뷰어 프로그램은 단독으로 악의적인 기능을 수행하지는 않습니다.
[그림 3] 암호화된 이미지 뷰어 프로그램으로 위장된 화면
만약, 이메일에 첨부되어 있던 암호화된 이미지 파일을 로딩하면, 메모리 맵핑 과정을 통해 내부에 포함되어 있는 쉘코드 디코딩이 은밀히 진행됩니다.
[그림 4] 디코딩 로직 화면
디코딩이 이뤄진 데이터는 GUI 종료 시점에 별도의 스레드를 호출해 악성 코드를 로드하게 됩니다.
공격자는 EXE 파일 자체에 악성코드를 포함하지 않고, 별도로 분리된 이미지 파일에 쉘코드를 넣어 호출하는 방식을 사용했는데, 이른바 스테가노그래피 기법을 사용했습니다.
또한, 피해 대상자로 하여금 의심을 받지 않기 위해 실제 정상적인 이미지 화면을 보여주고, 프로그램이 종료될 때 악성코드를 로드합니다. 따라서 악성코드를 식별하는데 어려움이 있을 수 있습니다.
[그림 5] 실제 이미지가 보여지는 화면
복호화된 이미지 파일의 디지털 카메라 정보를 확인해 보면, GT-N7100 갤럭시노트2 모델명을 확인할 수 있으며, 모델번호는 해외판으로 보여집니다.
[그림 5-1] 사진 파일의 속성 정보
해당 프로그램을 종료하는 경우 악성 쉘코드가 작동하며, 실제 프로세스는 종료되지 않고 백그라운드에서 실행을 유지하게 됩니다.
그리고 이미지 내부에 포함되어 있던 악성 바이너리가 작동하게 됩니다.
다음 화면은 실제 이미지 파일 내부에 암호화되어 숨겨져 있는 악성코드를 복호화한 그림입니다.
[그림 6] 스테가노그래피 기법으로 숨겨져 있는 악성코드 화면
악성 바이너리는 드롭박스 토큰을 통해 C2 명령을 수행하며, 감염된 컴퓨터의 정보를 유출시도합니다.
이 공격에 쓰인 코드는 기존 '금성121' 조직이 꾸준히 사용하던 방식과 동일합니다.
- DropBox Token : QEN2toyCpBAAAAAAAAAAHSVPJHwLnUQ8h1KdYOs5DExKWLQjqdg2Ltl6Ej7WNGD8
[그림 7] 드롭박스 C2 명령 수행 코드 화면
금번 공격에 사용되었던 악성파일은 지난 2018년 11월 16일 리포팅되었던 '금성121(Geumseong121) 정부기반 APT그룹, '코리안 스워드(Operation Korean Sword) 작전' 수행 중' 코드와 상당부분 동일한 것을 확인할 수 있습니다.
[그림 7-1] 오퍼레이션 코리안 스워드(좌측) 코드와 스테가노그래피 기법(우측) 코드 비교 화면
■ 안드로이드 기반 스마트폰 이용자를 겨냥한 공격 분석
공격자는 APK 악성앱을 통해서도 퓨전 공격을 수행했습니다.
마치 암호화된 이미지 복호화 도구처럼 위장하였고 다운로드하는 링크는 다음과 같습니다.
https://bit[.]ly/2Fwb5oc -> https://www.dropbox[.]com/s/dl/5prgwypzkfilz6p/Android_JPGE_Viewer.apk
[그림8] 악성앱이 제공하는 단순 이미지 뷰어 기능
다운로드된 악성앱도 윈도우용과 마찬가지로 이미지뷰어로 위장하고 있으며 실제 설치 시 기본적인 이미지뷰어 기능을 제공합니다.
이렇게 이미지 뷰어 기능을 악성코드가 실제로 제공함으로써 피해자로 하여금 자신이 악성앱을 설치했다는 사실을 인지하기 어렵게 만듭니다.
이미지 뷰어 기능을 통해 공격자가 함께 제공한 암호화된 이미지를 복호화해서 볼 수 있습니다.
일단 사용자가 악성앱을 설치하게 되면 악성앱은 피해자의 휴대폰에 설치된 채로 백그라운드에서 동작하며 피해자의 통화를 녹취합니다.
이렇게 녹취한 전화통화 내용은 공격자가 사전에 설정해둔 C2 서버로 전송되며, 또한 공격자가 C2 서버를 통해 추가 악성앱을 다운로드 및 실행할 수 있게 만듭니다.
- 통화가 이뤄지는 시점에서 녹음을 위한 정적 리시버를 매니페스트에 등록
- 감염된 휴대폰으로 전화통화를 하는 경우 수신/발신 행위에 따라 그에 맞는 코드가 동작
- 녹음된 녹취파일은 일단 저장된 후, 공격자의 명령을 받아 업로드를 진행
- 악성앱 다운로드는 Dropbox 와 Yandex 등의 클라우드 서비스 활용
이번에 발견된 악성앱을 상세하게 분석한 결과, 금성121 조직에서 수행한 작전명 'Blackbird'에서 활용한 악성앱들과 일부 유사한 코드가 발견되었습니다.
*금성121 조직이 수행한 APT 공격 히스토리
▶ 금성121 조직, 라자루스로 위장한 APT '이미테이션 게임' 등장 (2019. 08. 03)
▶ 금성121 APT 조직, 안보통일 관련 소식으로 스피어피싱 공격 시도 (2019. 07. 02)
▶ '금성121' 조직, 북한 선교 학교 신청서 사칭으로 APT 공격 (2019. 06. 15)
▶ 금성121 조직, 학술회의 안내로 위장한 '프린팅 페이퍼' APT 공격 시도 (2019. 05. 02)
▶ 금성121, <로켓맨 캠페인> 오퍼레이션 '블랙 배너' APT 공격 등장 (2019. 04. 29)
▶ '금성121 조직', 통일부를 사칭한 APT 공격, 구글 드라이브로 악성코드 전파 (2019. 04. 22)
▶ 금성121 APT 조직, '오퍼레이션 하이 엑스퍼트(Operation High Expert)' (2019. 04. 02)
▶ 로켓맨 APT 캠페인, '오퍼레이션 골든 버드(Operation Golden Bird)' (2019. 03. 20)
▶ '오퍼레이션 블랙버드(Operation Blackbird)', 금성121의 모바일 침공 (2018. 12. 13)
▶ 금성121 정부기반 APT그룹, '코리안 스워드 작전' 수행 중 (2018. 11. 16)
▶ 금성121 그룹의 최신 APT 캠페인 - '작전명 로켓 맨(Operation Rocket Man)' (2018. 08. 22)
▶ '금성121' 그룹의 '남북이산가족찾기 전수조사' 사칭 이메일 주의 (2018. 07. 04)
▶ 금성121, Flash Player Zero-Day (CVE-2018-4878) 공격 주의 (2018. 02. 02)
다음은 기존 'Blackbird' 악성앱과의 연관성을 살펴본 내용입니다. 전반적으로 사용하는 변수명과 처리흐름이 유사하다는 것을 알 수 있습니다.
a. Spyware.Android.Imageviewer 악성앱의 주요기능인 통화 녹취 기능 관련 코드 유사성
[그림 9] Blackbird와 Imageviewer의 통화 발신 시 녹취 진행 코드
[그림 10] Blackbird와 Imageviewer의 통화 수신 시 녹취 진행 코드
[그림 11] Blackbird와 Imageviewer의 통화 상태 변화 처리 코드
b. 추가 실행 명령을 C&C서버로부터 dex로 다운로드 받아 동적 로딩 후 사용하는 유사성
[그림 12] 명령 코드 다운로드 & 실행 코드
코드 자체가 유사한 것은 아니지만 좌측 Blackbird와 우측 Imageviewer의 코드 흐름과 사용 디렉토리가 비슷하다는 점을 확인할 수 있습니다.
■ 결론
정부차원의 후원을 받는 '금성121' APT 조직이 스테가노그래피 기법뿐만 아니라, 안드로이드 기반 스마트폰 이용자의 정보까지 노리고 있다는 점에 각별한 주의가 필요해 보입니다.
더불어, 스피어 피싱 공격에서도 투트랙 방식을 활용해 공격 대상자로 하여금 의심을 최소화하고, 신뢰기반 맞춤형 표적 공격을 수행하고 있다는 점이 주목됩니다.
안드로이드 스마트폰 이용자 분들은 APK 앱을 설치할 때 각별히 주의할 필요가 있으며, 가급적 공식 마켓에서 검증된 앱을 설치하여 사용하기 바랍니다.
ESRC에서는 이와 유사한 보안위협에 대한 추가 조사를 진행 중이며, 알약 제품군에 악성파일과 악성앱에 대한 업데이트를 모두 완료한 상태입니다.