보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
HIDDEN COBRA 악성코드(java.exe) 분석 보고서
2018.10.02
6,701
1. 개요
2009년부터 활동한 것으로 추정되는 해킹 그룹 HIDDEN COBRA에서 사용하는 악성코드(11종) 중 수집 가능한 악성코드(java.exe)에 대한 분석을 진행하였다. 해당 악성코드는 C&C 서버에 접속 후 공격 명령을 수신 및 실행하는 것으로 확인되었다.
1) 요약
악성코드(java.exe)는 64bit 악성 DLL파일(6AB301FC3296E1CEB140BF5D294894C5)에 의해 생성되는 것으로
알려져 있으며, 악성코드가 실행되면 고정된 4개의 C&C 서버에 대해 접속을 시도한다. C&C 서버 접속에 성공할 경우, 공격자로부터 명령을 수신하여 각 명령에 따른 여러 가지 악성행위들을 수행한다.
2) IoC 정보
IoC 정보와 확인된 악성행위는 아래 [표 1]과 같다.
C&C 서버 |
악성 행위 목록 |
80.91.118.45:443(https) |
ㆍ파일 검색/읽기/쓰기/삭제 ㆍ프로세스 실행/종료 ㆍ쉘을 이용한 명령 실행 ㆍ레지스트리 조작 |
181.119.19.56:443(https) | |
111.207.78.204:443(https) | |
184.107.209.2:443(https) |
[표 1] HIDDEN COBRA 악성코드에 의한 시스템 영향
2. 악성코드 정보
분석에 사용된 악성코드(java.exe)에 대한 정보는 다음과 같다.
구 분 |
내 용 |
SHA256 |
3c809a10106990ba93ec0ed3b63ec8558414c6680f6187066b1aacd4d8c58210 |
파일 크기 |
116kB (118,784-bytes) |
파일 형식 |
Win32 EXE |
[표 2] 악성코드(java.exe) 정보
3. 상세 분석
악성코드(java.exe)는 정보은닉을 위해 악성 행위에 필요한 함수들을 암호화 한 문자열 형태로 저장하고 있다.
[그림 1] 암호화 된 함수 이름
이 암호화된 문자열은 악성코드 내에는 이를 복호화하기 위한 루틴에 의해 평문 함수 이름으로 해독된다.
[그림 2] 함수 이름 복호화 #1
[그림 3]에서는 함수 이름의 복호화를 위해 sub_4019E0 이름의 서브루틴을 호출한다. 실제 sub_4019E0 서브루틴은 [그림 2]와 동일한 알고리즘을 가지고 있다.
[그림 3] 함수 이름 복호화 #2
복호화 이후엔 감염된 시스템의 CPU 및 디스크 드라이브, 네트워크 어댑터 등의 정보들을 확인한다.
[그림 4] CPU 및 디스크 드라이브 정보
[그림 5] 네트워크 어댑터 정보
아래 [그림 6]은 하드코딩 된 C&C 서버의 IP 주소 및 포트 번호를 나타낸다. 4바이트 값 중 각 1바이트 씩 하나의 네트워크 클래스를 나타낸다.
[그림 6] C&C 서버 IP 주소 및 포트 번호
이후 각 C&C 서버에 대한 접속을 시도하는데 하나의 감염된 시스템에서 여러 C&C 서버로의 접속을 지원하기 위해 select() 함수를 사용한 것으로 판단된다.
[그림 7] C&C 서버 접속 시도
분석한 날짜를 기준으로 위의 C&C 서버들은 폐쇄된 상태였으며 [그림 8]에서 볼 수 있듯이 각 C&C 서버와의 TCP 3-way handshaking 과정에서 RST/ACK 패킷을 보내어 연결을 거부한다.
[그림 8] C&C 서버 접속 실패
다음은 C&C서버의 폐쇄로 인해 악성코드 동적 확인이 불가함에 따라 정적 분석만으로 확인한 내용이다.
1) 추가 악성 행위 목록
만일 C&C 서버로의 접속이 성공한다면, 아래 [그림 9], [그림 10], 그리고 [그림 11]에서 볼 수 있듯이 다양한 악성 행위를 지원하는 여러 서브루틴이 존재한다.
[그림 9] 악성 행위 목록 #1
[그림 10] 악성 행위 목록 #2
[그림 11] 악성 행위 목록 #3
2) 레지스트리 조작을 통한 키 생성 및 서비스 제거
악성코드는 하드코딩 된 데이터를 가지고 레지스트리 키에 접근한 후 새로운 값을 생성한다.
[그림 12] 새로운 레지스트리 생성
또한, 특정 서비스를 검색하여 존재할 경우 해당 서비스를 제거한다.
[그림 13] 특정 서비스 제거
3) 파일관련 조작기능 존재
아래 [그림 14]는 특정 파일(디렉터리 포함)을 찾아 현재 디렉터리로 설정한다.
[그림 14] 현재 디렉터리 설정
아래 [그림 15]는 조건식을 만족하는 특정 파일을 검색한다.
[그림 15] 특정 파일 검색
아래 [그림 16]은 특정 파일에 대해 쓰기 작업을 수행한다.
[그림 16] 특정 파일 쓰기
아래 [그림 17]과 [그림 18]은 특정 파일에 대해 읽기 작업을 수행한다.
[그림 17] 특정 파일 읽기 #1
[그림 18] 특정 파일 읽기 #2
아래 [그림 19]는 특정 파일을 삭제한다.
[그림 19] 특정 파일 삭제
4) 프로세스 생성 및 종료
아래 [그림 20]은 특정 프로세스를 강제 종료한다.
[그림 20] 특정 프로세스 강제 종료
아래 [그림 21]은 특정 프로세스를 생성한다.
[그림 21] 특정 프로세스 생성
아래 [그림 22]는 로그인 된 계정의 권한으로 특정 프로세스를 생성한다.
[그림 22] 로그인 된 계정 권한의 프로세스 생성
5) 쉘 명령 실행
아래 [그림 23]은 cmd.exe /c 쉘 명령을 실행하는 프로세스를 생성한다.
[그림 23] 쉘 명령 실행
4. 참고자료
[1] https://www.us-cert.gov/ncas/analysis-reports/AR18-165A