메일 보내기

솔루션 검색 데모요청 TOP

RSS Feed 받기

로그인 정보로 피드받기
입력한 이메일로 피드받기

Contents 공유하기

Contents 공유하기

카카오 스토리 공유하기

가입하기

Contents 공유하기

인스타그램 공유하기

가입하기

Contents 공유하기

네이버밴드 공유하기

가입하기

맬웨어 작성자는 방어 메커니즘을 우회하고 유해한 활동을 숨기기 위해 다양한 기술을 사용합니다. 그 중 하나는 신뢰할 수있는 프로세스의 맥락에서 악성 코드를 숨기는 행위입니다. 일반적으로 은폐 기술을 사용하는 맬웨어는 코드를 시스템 프로세스 (예 : explorer.exe)에 삽입합니다. 그러나 일부 샘플은 다른 흥미로운 방법을 사용합니다. 이러한 유형의 맬웨어에 대해 논의 할 것입니다.

Microsoft .NET Framework의 신뢰할 수있는 응용 프로그램 InstallUtil.exe (Microsoft 웹 사이트의 정보 : "설치 프로그램 도구는 다음을 통해 서버 자원을 설치 및 제거 할 수있는 명령 줄 유틸리티입니다. 지정된 어셈블리에서 설치 관리자 구성 요소 실행.이 도구는 System.Configuration.Install 네임 스페이스의 클래스와 함께 작동합니다. ").

이 기술  정보 보안 연구원 인 Casey Smith ( 개념 증명)에 의해 설명 되었습니다 간단히 말해 콘솔 유틸리티 InstallUtil.exe는 어셈블리의 진입 점을 우회하여 악성 .NET 어셈블리를 실행합니다. 모든 악성 활동은 신뢰할 수있는 프로세스의 맥락에서 숨겨집니다.

악의적 인 샘플의 확산은 표준 패턴을 따르며 기본적으로 암호로 보호 된 아카이브로 사용자에게 전달되며 대부분의 경우 실행 파일 아이콘은 피해자가 파일을 일반 문서 또는 사진으로 인식하도록 특별히 선택됩니다. 또한 일반적인 소프트웨어의 핵심 생성기로 가장 한 실행 파일을 발견했습니다. 우선, 발전기의 악의적 인 콘텐츠가 % TEMP % 폴더 안에 있으며, 나중에 설명 된 방식으로 실행됩니다.

사용자가 실행 파일 아이콘으로 오인 된 경우

분석

우리가 직면 한 모든 악의적 인 파일은 혼란스러워서 수동 분석이 복잡해졌습니다. 샘플 263dc85de7ec717e8940b1ccdd6ee119를 가져 와서 문자열, 클래스, 메소드 및 필드의 난독성을 제거했습니다. 다음은 파일을 해제하는 방법입니다.

난독 화 전 샘플

InstallUtil.exe는 .NET 어셈블리 진입 점이 아닌 파일 실행을 시작할 수 있도록합니다. 실행은 System.Configuration.Install.Installer에서 상속받은 클래스에서 시작됩니다. 수동 분석을 용이하게하기 위해이 클래스는 조사 대상 샘플에서 InstallUtilEntryClass로 이름이 바뀌 었습니다. 정적 클래스 생성자의 코드는 어셈블리가 메모리에로드 될 때 먼저 실행되는 것으로 알려져 있습니다.이 기능은이 악성 코드 작성자가 사용하는 기능입니다.

메소드 실행 순서에 따라 악의적 인 파일의 동작을 살펴 보겠습니다. 먼저 생성자가 키워드 "static"으로 표시되고 어셈블리 실행이 시작될 때 FirstMainClass입니다.

어셈블리가로드 될 때 트리거되는 FirstMainClass의 정적 생성자입니다.

생성자는 다음을 수행합니다.

  • CheckSandboxieEnvironment ()는 SbieDll.dll 라이브러리를로드하려고 시도하여 파일이 Sandboxie에서 실행되는지 여부를 확인합니다. 라이브러리를로드 할 수 있으면 악성 프로세스가 종료됩니다.
  • CheckVirtualBoxEnvironment ()는 VitrualBox에 속한 vboxmrxnp.dll 라이브러리를 검색합니다. 라이브러리가 발견되면 악성 프로세스도 종료됩니다.
  • AddResourceResolver ()는 리소스로드 이벤트를 처리하기위한 메서드를 추가합니다. 이 메서드는 Deflate 알고리즘으로 압축 된 어셈블리를 특정 리소스에서 압축을 풀고 어셈블리를 메모리로로드합니다.

리소스에서 어셈블리를로드하는 책임을지는 메서드입니다.

어셈블리가 리소스에서 압축 해제되고 메모리로로드됩니다.

  • AssemblyResourceLoader 클래스의 UnpackAllAssemblies () 메서드는 모든 어셈블리 리소스를 반복하며 리소스 이름에 "+ ||"문자열이 있으면 이러한 리소스에서 어셈블리의 압축을 풉니 다. 이 방법으로 압축을 푼 어셈블리는 악의적 인 파일이 작동하는 데 필요하며 합법적 인 라이브러리입니다. Interop.MSScript.Control, Interop.TaskScheduler, SevenZipSharp;
  • RemoveZoneIdentifier ()는 파일이 인터넷에서 다운로드 된 경우 시작시 경고를 방지하기 위해 명령 줄을 통해 NTFS 대체 스트림 Zone.Identifier를 삭제합니다. 저자는 명령 줄 ( "cmd.exe / c (echo.> 파일 경로 : Zone.Identifier) ​​2> Null" )에서 문자 2와> 사이에 공백을 두어 약간의 실수를 범했습니다 . 콘솔:

Zone.Identifier 삭제시 발생하는 경고

  • ElevatePrivilegesProxy () 메서드는 ElevatePrivileges () 메서드의 래퍼이며, Matt Nelson ( 별칭 : enigma0x3)에 설명 된 알려진 UAC 우회 기법을 사용합니다 .

그런 다음 컨트롤은 Form5 클래스에있는 Main () 메서드 인 일반적인 진입 점으로 전달됩니다.

일반적인 진입 점은 Main () 메서드입니다.

WMI 개체는 30 초 후에 검색됩니다. 그런 다음 ScriptControlClassInstance 개체가 사용자 지정되어 언어 (Visual Basic 스크립트)와 스크립트 본문이 전송됩니다.

InstallUtil.exe를 사용하여 실행 파일을 실행하는 스크립트

AddCode () 메서드는 InstallUtil.exe를 사용하여 현재 어셈블리를 실행하는 VB 스크립트를 추가하고 실행합니다. 그런 다음 Environment.Exit (0)을 호출하여 현재 프로세스를 닫습니다.

다음 단계에서는 InstallUtil 도구를 사용하여 악성 개체가 실행되고 위에서 검사 한 FirstMainClass 클래스의 정적 생성자가 다시 한 번 실행됩니다. 컨트롤은 위에서 언급 한 것처럼 System.Configuration.Install.Installer에서 상속 된 InstallUtilEntryClass 클래스의 정적 생성자로 전달됩니다.

InstallUtil.exe에 의해 호출 된 정적 클래스 생성자

이 클래스의 기능은 다음과 같습니다.

  • % APPDATA % \ program \ msexcel.EXE에 악의적 인 파일 복사, "프로그램"폴더에 대한 숨김 + 시스템 속성 설정, msexcel.EXE 실행 및 현재 프로세스 종료.
  • 복사 된 파일을 자동 실행 (HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Run 또는 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run)에 추가합니다.
  • 피해자의 컴퓨터에서 생존을 보장하기 위해 매분 msexcel.EXE를 실행하는 "filesqmaepq0d.tnk"라는 작업 만들기.
  • 악성 프로세스가 이미 실행 중인지 확인합니다. 이름이 "78759961M"인 이벤트가 작성되고 해당 이벤트가 이미 시스템에 존재하면 새 프로세스가 종료됩니다.
  • Form5 클래스 생성 및 소멸자 호출.

임시 결과를 요약 해 보겠습니다. 위에 설명 된 모든 작업 (시스템에서의 권한 부여, 권한 상승, 신뢰할 수있는 응용 프로그램에서 시작)은 본질적으로 기본 작업의 기초를 마련합니다. 준비 작업의 다음 단계를 분석하여 악의적 인 활동의 핵심에 더 가까이 가게 할 것입니다.

악성 어셈블리에는 특히 System.Windows.Forms.Form에서 상속 된 5 개의 클래스가 포함됩니다. Form 클래스의 상속은 우연한 것이 아닙니다. 상속 계층 구조에서 여러 인터페이스를 구현합니다. 그 중 하나는 IDisposable이며, Dispose () 메서드를 자체 용도로 재정의 할 수 있습니다. Dispose () 메서드는 어셈블리를 닫거나 언로드 할 때 클래스에서 사용하는 관리되지 않는 리소스를 확보하기 위해 가비지 수집기에서 호출합니다. 이제 Form5 클래스의 Dispose () 메서드에 대한 소스 코드를 살펴 보겠습니다.

Form5 클래스의 재정의 된 Dispose () 메서드

보시다시피 사이클의 반복마다 다양한 방법이 실행되고 결과가 저장됩니다. 좀 더 자세히 살펴 보겠습니다.

  • 첫 번째 반복에서는 .NET Framework에서 RegAsm.exe 유틸리티의 전체 경로가 검색됩니다.
  • 다른 클래스에 저장되어있는 Base64의 문자열을 디코딩하고 SevenZipExtractor 라이브러리를 사용하여 결과 배열의 압축을 푸는 중첩 된 메서드 체인이 호출됩니다. 결과적으로 우리는 원격 관리 도구 NanoCore Client 인 배열을 얻습니다.
  • PERun.dll 라이브러리는 리소스에서 이전에 언팩 된 어셈블리에서 메모리로로드됩니다.
  • 이름이 "RunPE"인 클래스와이 클래스의 Run 메서드가이 라이브러리에서 필요합니다.
  • 마지막 반복에서 매개 변수가 전송되고 Run 메서드가 호출됩니다.

legalProgramPath 변수에 합법적 인 유틸리티 RegAsm.exe에 대한 전체 경로가 포함되어 있음을 알면 PEFileByteArray에는 클래스 이름이 RunPE 인 동안 바이트 배열 형태로 실행 파일이 포함됩니다. Run () 메서드가 신뢰할 수있는 프로세스 RunPE의 주소 공간에 악의적 인 코드를 숨기는 기법을 사용한다는 것을 알아내는 것은 어렵지 않습니다. 이 기술은 널리 알려져 있으며 예를 들어 여기 에 설명되어 있습니다 .

Run () 메소드 내부에서는 CREATE_SUSPENDED 상태 (6 번째 매개 변수는 4u)에 합법적 인 유틸리티 프로세스가 생성됩니다.

CREATE_SUSPENDED 상태에서 합법적 인 프로그램 프로세스 만들기

결국 RegAsm.exe 프로세스가 주소 공간에로드되고 페이로드 실행을 시작합니다. 원격 관리 도구 인 NanoCore Client. 신뢰할 수있는 프로세스 만 실행중인 프로세스 목록에 남아 있으며 숙련 된 사용자조차도 시스템이 손상되었음을 깨닫지 못할 수 있습니다.

합법적 인 유틸리티 만 실행중인 프로세스 목록에서 볼 수 있습니다.

RegAsm.exe는 (a) Microsoft의 합법적 유틸리티이고 (b) InstallUtil.exe와 같은 디렉터리에 있으며 (c) 다른 유틸리티를 호출하는 .NET Framework의 유틸리티이기 때문에 "이동 통신사"로 선택되었습니다 동일한 프레임 워크의 notepad.exe를 호출하는 것보다 덜 의심 스럽습니다. 실제로 RegAsm.exe의 사용은 중요하지 않습니다. "이동 통신사"는 보안 소프트웨어 및 사용자의 의심을 불러 일으키지 않는 프로그램 일 수 있습니다. 또한 악성 모듈과 관련된 모든 작업이 메모리에서 실행되므로 파일 검색 프로그램을 무시할 수 있습니다.

앞서 언급했듯이이 샘플에는 피해자의 컴퓨터를 제어하고, 스크린 샷을 찍고, 키 입력을 기록하고, 파일을 다운로드하는 등의 작업에 사용할 수있는 NanoCore Client가 포함되어 있습니다. 페이로드는 "세련된"암호화 장치와 광부에서 고급 트로이 목마에 이르기까지 무엇이든 될 수 있습니다.

결론

맬웨어 작성자는 다양한 트릭을 사용하여 악의적 인 활동을 숨기고 두 가지 합법적 인 프로그램의 맥락에서 악의적 인 코드의 실행을 허용하는 위의 기술은 분명한 예입니다. 이러한 종류의 은닉 방법을 탐지하려면 프로그램의 행동 분석이 필요합니다. 카스퍼 스키 랩의 보안 솔루션은 이러한 행동을 PDM : Trojan.Win32.Generic 및 PDM : Exploit.Win32.Generic로 탐지합니다.

IOC (MD5)

263DC85DE7EC717E8940B1CCDD6EE119 페이로드 : EF8AF3D457DBE875FF4E3982B34F1DE9 
3E4825AA1C09E27C2E6A1309BE8D6382 페이로드 : 82709B139634D74DED404A516B7952F0 
7E3863F827C1696835A49B8FD7C02D96 페이로드 : D1A9879FFCB14DF70A430E59BFF5EF0B 
8CB8F81ECF1D4CE46E5E96C866939197 페이로드 : D8652841C19D619D2E3B5D7F78827B6E 
FDF4086A806826503D5D332077D47187 페이로드 : BF4A3F4B31E68B3DE4FB1F046253F2D0

추천 컨텐츠