.Net 어셈블리를 사용한 랜섬웨어 기법 설명: 5가지 주요 기법
랜섬웨어 공격은 탐지를 회피한 다음 시스템의 데이터를 암호화할 때 발생합니다.이후 분석에서는 랜섬웨어 공격, 우리는 종종 공격이 다양한 기술과 함께 다양한 유형의 파일을 조합하여 사용한 방법에 대해 읽습니다.
그렇다면 이 모든 것이 실제로 무엇을 의미할까요?이 시리즈에서는 다음을 사용하여 모든 내용을 분석해 보겠습니다. .Net 랜섬웨어의 이러한 기능이 어떻게 가능해졌는지 보여주는 소프트웨어 프레임워크
멀웨어 페이로드 및 비콘에 관한 이전 3부작 시리즈에서는 다음과 같은 사항에 초점을 맞췄습니다. 메타스플로잇 침투 테스트 프레임워크.기성품을 사용했습니다. 계량기 다양한 공격자 기술을 보여주는 멀웨어 페이로드 첫 번째 기사 악의적인 통신이 시작되는 방법, 공격자의 인프라, 공격에 대한 포렌식 분석을 조사했습니다. 두 번째 기사 페이로드의 범주와 유형을 몇 가지 인메모리 조작 기법과 함께 살펴보았습니다. 최종 부분 이 시리즈는 회피 및 완화 기술에 중점을 두었습니다.
이 시리즈에서는 다음을 활용하여 개별 페이로드 파일 (어셈블리라고도 함) 을 만들 것입니다. .Net 소프트웨어 프레임 워크이지만 랜섬웨어에 중점을 둡니다.먼저 랜섬웨어와 멀웨어 기능을 개별 예시 기법으로 나누어 자체적으로 작동하는 방식을 이해하겠습니다.이러한 개별 기법 중 일부는 궁극적으로 단일 악성 랜섬웨어 페이로드로 결합되어 종종 치명적인 영향을 미칩니다.
기법 1: 다운로더, 드로퍼 및 로더
먼저 랜섬웨어나 멀웨어가 감염된 네트워크에서 어떻게 연결될 수 있는지 살펴봅니다.원격 시스템에 연결하고, 추가 페이로드를 다운로드하고, 손상된 시스템에 놓고, 실행 (즉, 메모리에 로드) 하는 기능입니다.
다음은 a의 예입니다. .Net 명령줄 (콘솔) 응용 프로그램은 다음과 같습니다.
- 다른 원격 실행 응용 프로그램을 다운로드하여 다운로더 역할을 합니다 (putty.exe) 인터넷에서
- 다운로드한 응용 프로그램을 a에 드롭합니다. 임시 컴퓨터에 있는 디스크의 폴더
- 애플리케이션 이름을 다음과 같이 바꿉니다. putty_new.exe
- 다운로드한 응용 프로그램을 컴퓨터에서 자동으로 실행하여 메모리에 로드합니다.

페이로드 스테이징을 사용하는 경우, 즉 여러 악성 파일이 서로 다른 작업을 수행하는 경우 Stager (초기의 작은 페이로드) 는 두 가지 기능을 모두 수행할 수 있습니다. 다운로더 그리고 또한, 느슨하게 점적기 스테이지용 (주요 대형 페이로드)스테이지의 로더일 수도 있습니다.사용되는 기법은 위협 행위자의 탐지 위험 평가에 따라 달라집니다. 운영 보안 고려 사항이라고도 합니다.
A 다운로더 웹 서버 또는 FTP 서버와 같은 원격 소스에서 페이로드를 가져오는 역할을 합니다.이는 일반적으로 인터넷을 통해 이루어집니다.따라서 다운로더가 원격 소스에 도달하려면 약간의 네트워크 연결을 시도해야 합니다.
A 점적기반면에 페이로드를 대상 시스템에 전달하거나 드롭하는 작업을 주로 담당합니다.따라서 다운로더는 드롭퍼일 수도 있지만 드롭퍼는 악성 페이로드가 휴대용 실행 파일 (PE) 파일 또는 DLL로 이미 내장되어 있을 수 있으므로 드롭퍼가 반드시 다운로더일 필요는 없습니다.이러한 파일 형식에 대해서는 나중에 설명하겠습니다.드롭퍼는 일반적으로 공격에 사용됩니다. 인기 있는 예로는 Solarwinds와 Kaseya 공급망 공격이 있습니다.둘 다 악성 페이로드의 드롭퍼로 사용되는 손상된 공급업체 에이전트 소프트웨어를 사용하는 것과 관련이 있습니다.이 회사는 후자를 사용하고 있습니다. 리빌 랜섬웨어 그룹.
A 로더 특히 메모리 전용 페이로드의 경우 다른 악성 페이로드를 실행하도록 대상 시스템을 설정하는 역할을 합니다.여기서 설정이란 종종 다른 프로세스의 메모리 공간에 DLL을 주입한 다음 올바른 메모리 권한을 설정하여 필요한 메모리 공간을 할당하는 것을 의미합니다.그러면 로더는 페이로드를 시작하거나 필요한 스레드를 실행합니다.
기법 2: EXE에서 DLL 파일을 로드하는 방법
랜섬웨어 페이로드는 EXE 파일 또는 DLL 파일 형태일 수 있습니다.다음으로 EXE 파일이라고도 하는 Windows 실행 파일이 동적 연결 라이브러리 (DLL) 파일이라는 파일을 로드하여 포함된 코드를 활용하는 방법을 살펴봅니다.

EXE와 DLL은 다음과 같은 두 가지 유형입니다. .Net 컴퓨터 프로그래밍 코드 명령 및 관련 정보 (메타데이터) 를 포함하는 어셈블리이러한 명령과 메타데이터는 하나의 결과 파일 (EXE 또는 DLL) 로 함께 조합됩니다. .Net 조립.이 두 가지 유형의 파일을 사용하면 Windows 시스템에서 컴퓨터 프로그래밍 코드를 실행 (EXE) 하거나 라이브러리 파일 (DLL) 로 저장한 다음 '차용'하여 다른 파일에서 읽을 수 있습니다.DLL의 경우 이 과정은 여러 사람이 서로 다른 시간에 도서관에서 같은 책을 빌려 내용을 읽는 것과 매우 비슷합니다.이 시리즈의 두 번째 부분에서는 다음과 같은 두 어셈블리를 더 자세히 살펴보겠습니다. .Net. 소프트웨어 프레임워크.
지금은 이 두 가지 유형의 사용을 보여주는 매우 간단한 예가 있습니다. .Net 어셈블리 — 자체 코드를 실행한 다음 DLL 파일에서 외부 코드를 로드하고 읽는 실행 파일 (EXE) 입니다.그러면 실행 파일은 로드된 DLL 코드에 일부 입력을 전달합니다.마지막으로 DLL은 EXE에서 수신한 입력을 사용하여 응용 프로그램을 실행하는 사용자에게 메시지를 다시 표시합니다.다음은 실제 코드입니다.

이 간단한 응용 프로그램은 EXE와 DLL 간의 관계도 보여줍니다. .Net 어셈블리.이러한 유형의 관계는 Windows 운영 체제 자체를 비롯한 많은 응용 프로그램 및 운영 체제 (공유 라이브러리) 에서 합법적으로 사용됩니다.Windows는 여러 응용 프로그램에서 공유할 수 있도록 많은 자체 코드를 DLL로 패키징합니다.
아래 이미지는 이전 예제의 EXE 및 DLL에 대한 프로그래밍 코드를 보여줍니다.코드는 에서 지원하는 언어 중 하나인 C# 프로그래밍 언어를 사용하여 작성되었습니다. .Net.이미지에는 DLL 코드 참조가 강조되어 있습니다.

DLL은 코드를 한 번 작성한 후 여러 실행 파일에서 공유 또는 동적 라이브러리로 여러 번 사용할 수 있는 효과적인 방법입니다.이로 인해 많은 멀웨어 및 랜섬웨어 제품군에서도 많이 사용되고 있습니다.DLL 사이드 로딩 및 DLL 하이재킹과 같은 기술은 이들 간의 관계를 이용하는 일반적인 악성 기술입니다. .Net 어셈블리.
테크닉 3: 리빙 오프 더 랜드 바이너리의 리콘 및 런칭
대상 시스템에 대한 유용한 정보를 수집하는 기능 (Discovery) 과 동시에 해당 시스템에서 다른 바이너리 또는 실행 파일을 실행하는 기능 (Spawning) 과 같은 중요한 기술을 조합하여 계속 진행하고 있습니다.이 이미지에서는 초기 사용자 지정 실행 파일이 대상 Windows 시스템에서 네이티브 실행 파일 또는 바이너리를 실행하여 LoTL (Off Off of The Land) 공격을 보여줍니다.

이 예제에서는 초기 C# 응용 프로그램을 실행한 후 대상 시스템에 대한 유용한 정보를 수집하는 과정을 보여 줍니다. 출력에 녹색 텍스트가 표시됩니다.수집된 드라이브 정보를 확인해 보십시오.랜섬웨어는 이러한 정보를 활용하여 이러한 드라이브에 있는 파일을 표적으로 삼은 다음 암호화 전에 유출될 수 있습니다. 대개의 경우 대량의 랜섬웨어가 대량의 랜섬을 요구하기 때문입니다.
외부 시스템 실행 파일인 Windows 명령 프롬프트 (cmd.exe) 실행 가능.그러면 사용자 지정 응용 프로그램이 일부 Windows 명령을 Windows에 전달합니다. cmd.exe 표시할 프로세스 (빨간색 텍스트로 표시). 이 경우에는 Windows 시스템의 버전 정보입니다.이 문서에서 유용하게 활용할 수 있도록 사용자 지정 C# 응용 프로그램에는 수행한 작업의 출력과 실행된 프로세스에 대한 정보가 표시됩니다.다른 외부 응용 프로그램을 실행할 수 있는 이 기능은 피해자 프로세스를 시작하여 결국 악성 코드를 주입하는 데에도 유용합니다.
기법 4: 데이터 인코딩
또 다른 유용한 기술은 데이터 인코딩입니다.알고리즘을 사용하여 데이터를 다른 형식으로 표현하는 프로세스입니다.예를 들어, HTTP 인증 및 API 호출의 기본 인증과 같이 데이터를 주고 받기 위한 일부 웹 요청에서는 한 가지 유형의 인코딩인 base64가 합법적으로 사용됩니다.하지만 동일한 base64 인코딩 예제를 사용하면 악성 프로그램이나 페이로드에서 사용하는 특정 텍스트와 명령을 숨길 수도 있습니다.콜백 URL이나 파일과 같은 코드 일부를 난독화하는 데 사용할 수 있습니다.이러한 기법은 아래 독립 실행형 C# 프로그램에 나와 있습니다.

이 특정 앱 예제에서 코드는 일부 텍스트 (이 경우에는 URL) 를 사용합니다.https://listener.malware.bad” 를 사용하여 컴퓨터 바이트 배열로 변환한 다음 바이트에 대해 base64 인코딩 알고리즘을 실행하여 “의 영숫자 ASCII 텍스트로 변환합니다.AHR0CHM6LY9SAXN0ZW5LCI5TYWX3YXJLLMJHZA==“는 위 애플리케이션 디스플레이의 인코더 섹션 아래에 표시됩니다.이 프로세스를 프로그래밍 방식으로 되돌리면 디코더 섹션에 표시된 대로 원본 텍스트를 다시 가져올 수 있습니다.이렇게 하면 URL이 눈에 잘 띄지 않게 숨겨지고 악의적인 URL이 무엇인지 즉시 확인할 수 없습니다.
기법 5: 암호화
마지막으로 암호화에 대해 살펴보겠습니다.손상된 시스템에서 파일을 암호화하는 것은 랜섬웨어의 대명사입니다.이는 대부분의 다른 기술과 마찬가지로 랜섬웨어에서 악의적인 목적으로 사용되는 유휴 데이터를 보호할 수 있는 합법적인 기능이기도 합니다.
아래 예에는 C# 암호화 애플리케이션이 있습니다.먼저 암호화하려는 파일의 복사본을 만든 다음 원본을 그대로 두고 사본을 암호화합니다.

다음은 원본 파일의 원본 내용입니다. Data1.txt, 다른 파일에 복사됩니다. Data1-Encrypted.txt그러면 이 새 파일이 암호화됩니다.

암호화는 랜섬웨어가 사용하는 주요 기술 중 하나이며, 손상된 시스템의 랜섬을 보호하기 위한 기반이 됩니다.또한 전송 중이거나 유휴 중인 멀웨어 페이로드나 로더를 숨겨 탐지를 회피하는 데에도 유용할 수 있습니다.
5월 22일 시리즈 2부 읽기
다음 기사에서는 마이크로소프트의 제품을 살펴보겠습니다. .Net 소프트웨어 프레임워크 및 관련 C# 프로그래밍 언어는 여기에 표시된 몇 가지 전술 및 기법 및 궁극적인 활용 방법에 대한 참고 자료입니다.
자세히 알아보기 Illumio 제로 트러스트 세그멘테이션이 랜섬웨어 침해를 방지하는 데 어떻게 도움이 되는지 알아보십시오.