[보안뉴스 원병철 기자] 최근 공격자의 명령을 받아 다양한 악성 행위를 수행할 수 있는 RAT 악성코드의 일종인 ‘njRAT 악성코드’가 웹하드와 토렌트를 통해 유포되고 있어 주의가 요구된다. njRAT 악성코드는 다운로드 및 명령 실행, 키로깅, 그리고 사용자 계정정보 탈취 등을 수행할 수 있기 때문에 과거부터 공격자들에 의해 꾸준히 사용되고 있다.
[이미지=utoimage]
안랩 ASEC 분석팀은 njRAT 악성코드는 인터넷에서 쉽게 빌더를 구할 수 있기 때문에 국내 사용자들을 대상으로 다양한 형태로 유포 중이며, 대표적으로는 토렌트와 웹하드를 이용해 정상 프로그램으로 위장해 유포하는 방식이 있다고 설명했다. 특히, njRAT 같은 이미 알려진 악성코드들은 보안 프로그램에 의해 쉽게 차단되기 때문에 공격자들은 다양한 방식을 이용해 탐지를 우회하고 있다. 여기에서는 최근 유포되고 있는 njRAT의 유포 방식과 감염 흐름 그리고 공격자가 추가로 설치한 이력이 확인되는 악성코드들에 대해 다루도록 한다.
공격자는 올해부터 주로 토렌트를 통해 njRAT을 게임 설치 프로그램과 함께 포함시켜 유포하고 있으며, 최근에는 웹하드에서 유포하는 사례도 확인된다. 물론 공격자가 직접 웹하드에 업로드한 것인지 또는 토렌트에서 다운로드 받은 파일을 업로더가 그대로 업로드한 것인지는 알 수 없다. 다음은 현재 특정 웹하드에서 다운로드가 가능한 악성코드로서, “[매우긍정적도트액션] lostruins-chronos”라는 이름으로 게임 프로그램과 함께 LostRuins.zip 압축 파일에 포함되어 있다.
▲게임프로그램과 함께 다운로드되는 악성코드[자료=안랩]
참고로 이 사례 외에도 토렌트에서 게임 프로그램에 포함되어 유포되는 사례들이 더 존재하며, 아래와 같이 상대 경로 및 파일명들을 보면 동일한 형태인 것을 확인할 수 있다. 파일은 ‘vxrlib86.dll’만을 대상으로 했지만, 단독으로 실행되는 형태가 아니다 보니 실제 악성코드는 더 존재한다.
\survival.z-unleashed\data\vxrlib86.dll
\hundred days – winemaking simulator\data\vxrlib86.dll
\teamfight.manager.v1.2.0\data\vxrlib86.dll
\lacuna.a.sci-fi.noir.adventure.v1.0.3\data\vxrlib86.dll
\until we die\data\vxrlib86.dll
\cardnarok – raid with gods\data\vxrlib86.dll
압축 파일을 풀면 다음과 같은 구성을 확인할 수 있다. 게임을 다운로드 받은 사용자는 아이콘 및 파일 이름을 보고 Lostruins.exe가 게임 프로그램일 것으로 여겨 해당 파일을 실행할 가능성이 높다.
▲압축을 해제한 후 나오는 파일[자료=안랩]
하지만 Lostruins.exe 파일은 악성코드 로더이며, 실제 게임 프로그램 Lostruins.exe은 Maindata.dll 이름으로 존재한다. 로더는 Maindata.dll과 악성코드를 함께 실행하며, 이에 따라 게임과 njRAT 악성코드가 동시에 실행되는 형태다. 이렇게 정상 프로그램으로 위장해 실제 정상 프로그램과 악성코드를 같이 실행시키는 방식은 이전에 유포되는 방식과 유사하다.
로더 Lostruins.exe를 조금 더 살펴보면, 실행 시 현재 날짜를 구한 후 6월 4일 이후부터는 예외를 발생시키고 종료되도록 하는 루틴이 존재한다. 즉, 이 악성코드는 2021년 6월 3일까지만 동작하는 것이다. 또한, 현재 경로에서 실제 게임 프로그램인 ‘Maindata.dll’ 파일이 존재하는지 여부를 검사하며 없을 경우에도 종료된다.
▲6월 3일까지만 동작하도록 만들어진 악성코드[자료=안랩]
이후 data 폴더에 존재하는 vmxlib98.dll 파일과 vxrlib86.dll 파일을 ‘Program Data’ 폴더에 복사한 후 실행한다. 마지막으로 Run Key에 등록해 재부팅 후에도 동작할 수 있도록 한다. 여기에 사용되는 문자열들은 인코딩되어 있으며 실행 중 디코딩되어 사용된다. 다음은 Main() 함수의 일부분이며 인코딩된 문자열을 디코딩한 결과다.
▲Main 함수(문자열 디코딩)[자료=안랩]
> cmd.exe start Maindata.dll && cd data && copy /y vmxlib98.dll %PROGRAMDATA% && copy /y vxrlib86.dll %PROGRAMDATA%\vxrlib86.exe
> reg add “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” /v “Start” /t REG_SZ /d “C:\Windows\System32\cmd.exe /c start C:\ProgramData\vxrlib86.exe” /f
과거 형태는 악성코드가 exe 파일 하나로 존재해 더블 클릭만으로 악성코드의 행위가 발현됐지만, 이번에 확인된 형태는 vxrlib86.exe 파일 단독으로 실행이 불가능하고 vmxlib98.dll 파일이 동일 경로에 함께 존재해야 실행된다. vxrlib86.exe의 루틴은 다음과 같은 함수가 전부이기 때문에 단독으로는 실행될 수 없다. 즉, Frp 클래스가 구현되어 있지 않아 Frp 클래스의 Spr() 메소드를 호출할 수 없다.
하지만 자세히 살펴보면 vmxlib98 라이브러리를 참조하는 것을 확인할 수 있고, 동일 경로에 vmxlib98.dll 파일이 존재할 경우 이 파일에 구현되어 있는 Frp 클래스의 Spr() 메소드를 호출하게 된다.
▲vxrlib86.exe가 참조하는 라이브러리[자료=안랩]
vmxlib98 라이브러리에 구현되어 있는 Spr() 메소드는 인코딩된 데이터를 디코딩한 후 Assembly.Load() 및 Assembly.Invoke()하여 메모리상에서 실행하는데, 복호화된 것이 실제 njRAT이다.
njRAT의 C&C 주소 : ipipip1079.kro[.]kr:449
공격자는 이렇게 시간 조건을 포함해 각각의 파일들이 단독으로는 실행될 수 없도록 구현함으로써, 샌드박스와 같은 보안 장비에서 악성 행위를 발현하지 못하게 하는 방해 기법을 사용한다. 이러한 점들은 이전에 발견된 njRAT과 차별되는 점이며, 시간이 지나면서 분석 및 진단을 회피하는 기능들이 추가되고 있다는 사실을 확인할 수 있다.
다음으로는 공격자가 이 njRAT 악성코드를 이용해 감염 PC에 추가로 설치한 악성코드들을 다룬다. 먼저 또 다른 형태의 njRAT들이 있다. 공격자는 파일만 다른 것이 아닌 C&C 주소도 변경해 설치했다. 이는 명령제어(C&C) 주소가 차단됐을 경우를 대비해 njRAT을 추가적으로 설치하기 위한 목적으로 추정된다.
추가 njRAT 1의 C&C 주소 : discordpff.kro[.]kr:449
추가 njRAT 2의 C&C 주소 : dltlgn071105.kro[.]kr:1
그리고 NirSoft의 WebBrowserPassView 툴을 설치하고 실행한 이력이 존재한다. 해당 프로그램은 이름과 같이 웹 브라우저에 저장되어 있는 계정 정보를 추출해 보여주는 프로그램이다. 공격자가 /stext 인자를 주고 실행시켜 GUI 없이 추출한 계정 정보를 텍스트 파일 형태로 만들 수 있다. 이에 따라 WebBrowserPassView는 공격자에 의해 자주 사용되고 있으며, 대표적으로 HawkEye 키로거도 WebBrowserPassView를 /stext 인자와 함께 사용한다.
실제로 실행시킨 커맨드라인을 보면 WebBrowserPassView를 nirsoft.exe라는 이름으로 설치하고 감염 PC의 웹 브라우저 계정 정보를 browser.txt 파일로 생성하는 것을 확인할 수 있다.
> cmd.exe /c c:\users\[사용자명]\appdataoamingirsoft.exe /stext c:\users\[사용자명]\appdataoaming\browser.txt
공격자는 njRAT 악성코드 외에도 Simple UDP Rat이라는 간단한 형태의 RAT 악성코드를 설치했다. Simple UDP Rat은 다음과 같이 깃허브에도 존재하는 오픈소스 DDoS RAT 악성코드다.
▲Simple UDP Rat[자료=안랩]
해당 악성코드는 UDP DDoS 공격만 지원하는 간단한 형태의 악성코드이며, 빌더가 존재하는 형태가 아니라 소스 코드로 존재하기 때문에 공격자가 직접 빌드해야 한다. 다음은 공격자가 Simple UDP Rat을 빌드할 때 생성된 pdb 경로다. 참고로 UDPnet이라는 키워드를 통해 검색해보면 국내에서 오픈 소스 Simple UDP Rat을 공격 툴로 판매한 이력이 있었던 것을 추정할 수 있다.
▲공격자의 PDB 정보[자료=안랩]
– C:\Users\tomag\OneDrive\바탕 화면\Vexxie\내가크랙한 툴\UDPNET 소스\Simple-UDP-Rat-master\Client\x64\Release\Client.pdb
– C:\Users\Administrator\Desktop\UDPnet 김딸딸 전용\UDPnet 김딸딸\Client\x64\Debug\Client.pdb
특이사항이 있다면 Simple UDP Rat 샘플 중 하나는 Win32/Neshta 바이러스에 감염된 형태로 njRAT에 의해 설치됐는데, 이는 공격자의 의도보다는 공격자 PC가 Neshta 바이러스에 감염되어 있었을 가능성이 높다.
▲‘run away’ 메시지 박스[자료=안랩]
마지막으로 감염 PC의 화면을 잠그고 재부팅을 유도한 후, 재부팅 이후에는 ‘UR NEXT’라는 이름의 텍스트 파일을 바탕화면에 생성하고, ‘run away’라는 메시지 박스를 무한하게 생성해 사용자의 PC 사용을 방해하는 종류의 악성코드를 생성하기도 한다. 참고로 txt 파일에 대한 아이콘도 아래와 같이 ‘UR NEXT’ 문자열을 보여주는 빨간색 아이콘으로 변경한다.
안랩 ASEC 분석팀은 “토렌트 및 국내 웹하드 등 자료 공유 사이트를 통해 njRAT 악성코드가 활발하게 유포되고 있어 사용자의 주의가 필요하다”면서, “자료 공유 사이트에서 다운받은 실행파일은 각별히 주의해야 하며, 유틸리티 및 게임 등의 프로그램은 반드시 공식 홈페이지에서 다운로드하는 것을 권장한다”고 조언했다.
[원병철 기자(boanone@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>