최신 APT 공격 사례 분석, 어떤 악성코드들이 쓰였나?
ASEC(AhnLab SEcurity intelligence Center)은 최근 알려지지 않은 공격자가 국내 사용자와 시스템을 대상으로 다양한 원격 제어 악성코드를 설치하는 APT 공격 사례를 확인했다. 공격자는 직접 제작한 것으로 추정되는 리버스 쉘(Reverse Shell), 백도어, VNC(Virtual Network Computing) 악성코드 뿐만 아니라 원격 화면 제어를 위해 RDP(Remote Desktop Protocol)를 사용하기도 했다. 이번에 확인된 공격이 어떻게 전개되었는지, 또 악성코드들이 어떻게 사용되었는지 살펴본다.
직접적인 최초 침투 방식은 확인되지 않지만, 개인 사용자를 대상으로 한 공격 사례에서는 스피어 피싱 방식을 이용해 악성코드를 메일에 첨부한 것으로 추정된다. 이 외에도, 국내 취약한 IIS 웹 서버 및 MS 익스체인지 서버를 공격해 악성코드를 설치하는 사례도 함께 확인된다.
공격에는 리버스 쉘 악성코드를 비롯해 파이썬으로 개발된 백도어인 noMu, 소스 코드가 공개된 중국 백도어 Fxfdoor, 애이싱크랫(AsyncRAT), 타이트 VNC(Tight VNC), 넷캣(Netcat), 애니데스크(AnyDesk) 등 원격 제어를 위한 악성코드가 사용됐다. 이 외에도, RDP 접속을 위한 프록시와 백도어의 실행을 담당하는 런처(Launcher) 악성코드도 함께 사용된 것으로 확인됐다.
공격자는 이들 악성코드를 통해 감염 대상 시스템에 대한 제어를 탈취할 수 있었다. 공격자의 최종 목적은 정확하게 알 수 없지만, 랜섬웨어나 코인 마이너를 추가로 설치하는 사레는 아직 확인되지 않았다. 공격 과정에서는 감염 대상 시스템에 WebBrowserPassView를 설치해 웹 브라우저에 저장된 자격 증명 정보를 탈취한 이력이 확인됐으며, 대다수 사례가 감염 대상 시스템에 대한 제어 획득인 것을 보면 공격자의 목적은 정보 탈취일 것으로 추정된다.
초기 침투 과정을 먼저 살펴보면, 확인된 공격 사례는 대부분 개인 사용자를 표적으로 삼았다. 비록 직접적인 초기 침투 공격이 확인되지는 않았지만, 공격자는 스피어 피싱 공격을 하고 있는 것으로 추정된다. 감염 대상 시스템에서는 압축 파일의 압축을 해제한 후 파워셸(PowerShell) 및 JavaScript, VBScript 악성코드가 실행된 이력이 확인된다. 해당 악성코드들은 시스템에서 지속적으로 실행되며 외부에서 추가 페이로드를 설치하는 것으로 보인다.
[그림 1] C&C 서버에 접속하고 악성코드를 설치하는 Wscript
참고로 C&C 서버들을 조사하던 중 특정 C&C 서버에 다음과 같은 워드 문서 파일이 업로드된 것이 확인됐다. 해당 문서 파일은 악성코드는 아니며, 미끼로 사용된 것으로 보인다.
[그림 2] 악성코드 유포 사이트에서 확인된 워드 문서
공격자는 개인 사용자들 외에도 취약한 웹 서버를 공격해 악성코드를 설치했다. [그림 3]은 취약한 국내 웹 서버가 공격당한 이후 w3wp.exe 프로세스에 의해 리버스 프록시 악성코드가 설치된 로그다. 해당 시스템에서는 이미 오래 전부터 여러 차례에 걸친 공격 시도가 확인됐으며, 이 공격을 통해 최종적으로 웹 셸(Web Shell)이 설치된 것으로 보인다.
[그림 3] 취약한 웹 서버에서 악성코드가 설치된 로그
그렇다면 공격에는 어떤 악성코드들이 사용됐을까?
1. 원격 제어 악성코드
(1) 리버스 쉘
공격에 사용된 악성코드 중 리버스 쉘 악성코드가 대다수를 차지한다. 리버스 쉘은 커맨드 라인 인자를 전달받아 동작하는데, 첫 번째, 두 번째 인자로 각각 C&C 서버 주소와 C&C 서버 포트 번호를 필요로 한다. 유형에 따라 세 번째 인자가 필요한 경우도 있으며, 일반적으로 CMD 프로세스가 사용된다. 이 점은 넷캣과 유사하다. 그리고 실제로 넷캣을 리버스 쉘 툴로 사용할 수도 있다.
[그림 4] 리버스 쉘 실행 명령
(2) 백도어 - noMu
공격자는 리버스 쉘 외에도 단순한 형태의 백도어 악성코드인 noMu를 공격에 사용했다. noMu는 파이썬으로 개발됐으며, 파이인스톨러(PyInstaller)를 이용해 실행 파일 형태로 빌드돼 유포됐다. 공격자는 악성코드 작성 시 “reverse_noMu”, “reverseWin_noMu”, “reverse_win64_noMu”, “reverseWin”과 같은 이름을 사용했다. 따라서 이번 글에서는 해당 백도어 악성코드를 ‘noMu’로 명명한다.
noMu는 명령 실행 외에도 파일 업로드, 다운로드 등의 기본적인 기능을 제공하는 백도어이다. 단순한 형태를 띠고 있으며, 외부에서 동일한 유형의 악성코드가 확인되지 않는 것을 보면 공격자가 직접 제작한 것으로 추정된다.
[표 1] noMu가 지원하는 명령
noMu의 특징 중 하나는 한글 환경을 대상으로 제작했다는 점이다. [그림 5]와 같이 리버스 쉘 기능을 담당하는 함수에서 출력 결과를 한글 인코딩 방식인 “CP949”로 변환하는 루틴이 존재한다.
[그림 5] noMu의 한글 인코딩 루틴
공격자는 커맨드 라인을 기반으로 감염 대상 시스템을 제어할 때 대부분 noMu를 사용했다. 물론 이후에는 원격 데스크톱으로 화면을 제어했을 것으로 추정되나, 사용자 계정을 추가하거나 RDP 관련 방화벽을 설정하고 추가 페이로드를 설치하는 등의 작업에는 모두 noMu를 사용한 것으로 확인됐다. 참고로 공격자는 프록시 악성코드 설치 시 서트유틸(Certutil)을 이용해 베이스64(Base64)로 인코딩된 형태로 다운로드한 후 복호화했다.
(3) 백도어 – Fxfdoor
공격자가 사용한 백도어 악성코드 중에는 온라인에 소스 코드가 공개된 것으로 알려진 중국 백도어도존재한다. 이는 Fxdoor 악성코드로, 과거 북한의 김수키(Kimsuky)로 추정되는 위협 그룹이 2018년 초부터 암호화폐 거래소와 사용자를 집중 공격하는 데 사용되기도 했다. 해당 공격에 대한 상세 내용은 안랩이 발행한 보고서를 통해 확인할 수 있다.
[그림 6] C&C 통신 과정에서 사용되는 fxftest 문자열
해당 악성코드는 C&C 서버와의 통신 과정에서 “fxftest” 문자열을 전송하는 것이 특징이다. 이런 이유로, ‘Fxfdoor’라는 이름을 붙였다. Fxfdoor는 파일 조회/삭제/업로드/다운로드와 같은 파일 작업 및 프로세스 실행/종료와 같은 프로세스 작업, 그리고 명령 실행 기능을 제공하는 단순한 형태의 백도어 악성코드이다.
[표 2] Fxfdoor가 지원하는 명령
(4) 기타 원격 제어 악성코드
앞서 언급한 것과 같이, 공격자는 넷캣 툴을 사용해 감염 대상 시스템을 원격에서 제어하기도 했으며, 소스 악성코드인 에이싱크랫을 사용한 이력도 확인된다. 공격자는 주로 사용자 계정을 추가하거나 미미카츠(Mimikatz)로 자격 증명 정보를 탈취하는 방식으로 접근 권한을 얻은 다음, RDP 프로토콜로 감염 대상 시스템을 원격으로 제어하는 양상을 띤다.
이 밖에, 원격 화면 제어를 위해 애니데스크나 타이트 VNC 툴을 추가로 설치하기도 했다. 공격에 사용된 타이트 VNC는 서버 모듈로서 특정 포트를 오픈한다. 따라서 공격자는 추후 클라이언트 모듈로 접근하면 원격 제어가 가능하다.
다음은 애니데스크를 설치하는 배치(Batch) 파일과 설치된 애니데스크에 공격자가 비밀번호를 설정하는 명령이다.
2. 프록시(Proxy)
공격자는 감염 대상 시스템을 제어하는 데 RDP를 보편적으로 사용하지만, 시스템이 사설 네트워크에존재하는 경우, 다시 말해 외부에 직접적으로 노출돼 있지 않은 경우에는 RDP로 접속이 불가능하다. 이때 공격자는 Ngrok나 Frp를 설치해 이를 우회한다.
이번 공격 사례에서는 공격자가 손수 제작한 프록시 악성코드가 사용됐다. 프록시 악성코드는 중개 기능을 지원하며, 실행 시 C&C 서버에 직접 연결되는 동시에 로컬 시스템의 3389번 포트, 즉, RDP 서비스에 이를 중개한다.
공격자는 최초 감염 시 리버스 쉘이나 noMu를 먼저 설치하며, 이후 이를 이용해 RDP 방화벽을 활성화하고 사용자 계정을 추가하거나, 미미카츠를 이용해 자격 증명 정보를 탈취한다. 여기까지의 과정이 끝나면 프록시 악성코드를 설치하고, 최종적으로 RDP를 통해 감염 대상 시스템을 원격 제어한다.
[그림 7] 프록시 악성코드 설치를 담당하는 noMu 백도어
3. 런처
공격자는 이 외에도 다수의 런처 악성코드를 설치했다. 런처 악성코드는 단순히 원격 제어 악성코드를 실행하거나, 윈도우 디펜더 예외 처리, 지속성 유지를 위해 작업 스케줄러 또는 서비스에 등록하는 기능들을 담당한다.
[그림 8] 공격에 사용된 런처 악성코드들
시스템을 감염시킨 이후, 공격자들은 다음 행위들을 수행했다.
1. 정보 조회
최초 침투 과정을 통해 리버스 쉘이나 백도어가 설치된 이후 시스템에 대한 기본적인 정보를 수집하였다. 대표적으로 추가 페이로드를 설치하기 이전에 다음과 같은 명령들을 실행한 이력들이 확인된다.
2. 지속성 유지
공격자는 주로 작업 스케줄러를 이용해 지속성을 유지했다. 이에 따라 다음과 같이 공격자가 백도어를 통해 등록된 작업을 조회하거나 새롭게 설치하는 명령들이 실행된 이력들이 확인된다.
3. RDP 관련 행위
또한, 공격자는 다음 명령을 이용해 시스템에 새로운 사용자를 등록하고, 이를 백도어 계정으로 사용했다. 추가한 계정은 사용자의 눈에 띄지 않도록 SpecialAccounts에 등록해 은폐했다.
이 외에도 미미카츠로 기존에 존재하는 계정의 자격 증명 정보를 탈취하기도 했다. 참고로 최신 윈도우 환경에서는 기본적으로 미미카츠로는 WDigest 보안 패키지를 이용한 평문 형태의 비밀번호를 구할 수 없기 때문에 UseLogonCredential 레지스트리 키를 설정하기도 했다. 이렇게 획득한 계정은 추후 RDP를 이용한 원격 제어에 사용될 수 있다.
RDP가 활성화돼 있지 않은 시스템에서는 다음 명령들을 이용해 RDP 서비스와 방화벽을 활성화하기도 했다.
4. 정보 탈취
또한, 공격 과정에서 니르소프트(NirSoft)사의 WebBrowserPassView나 CredentialFileView가 함께 사용되는 사례들도 확인된다. 공격자는 이들 툴을 이용해 웹 브라우저 및 시스템에 저장된 자격 증명 정보를 탈취했다. WebBrowserPassView를 커맨드라인으로 실행해 수집한 자격 증명 정보를 “rrr.csv”라는 파일로 생성하는 명령은 [그림 9]와 같다.
[그림 9] 웹 브라우저 자격 증명 정보 탈취
결론
이번 사례의 공격자는 한국어 사용자를 주요 공격 대상으로 하는 것으로 추정되며 개인 사용자에게는 스피어 피싱 공격을, 웹 서버는 취약점 공격을 감행하는 것으로 보인다.
공격자는 최초 침투 이후 다양한 원격 제어 악성코드들을 이용해 감염 시스템을 제어했다. 이를 위해 직접 제작한 리버스 쉘과 백도어 악성코드들을 공격에 사용했으며 이외에도 온라인에 소스 코드가 공개된 중국 백도어를 함께 사용하기도 했다. 참고로 해당 백도어는 과거 김수키(Kimsuky) 공격 사례에서도 확인된 점이 특징이다.
공격자의 최종적인 목적은 아직 정확하게는 알 수 없지만 랜섬웨어나 코인 마이너를 추가적으로 설치하지 않았다는 점, 원격 제어가 주 목적인 점, 그리고 자격 증명 정보를 탈취하는 도구들이 사용된 점을 볼 때 정보 탈취가 목적인 것으로 보인다.
본 보고서의 전문은 AhnLab TIP 구독 서비스를 통해 확인할 수 있다.
출처 : AhnLab