본문 바로가기

4-2. 2024-1 심화 스터디/윈도우 악성코드분석

[악성코드 매뉴얼 분석]

LockBit

 

악성코드 매뉴얼 분석

PEB 구조체에서 NtGlobalFlag 값이 0x70으로 설정되어있다면 디버깅 중이라는 것을 의미합니다.

만약 디버깅 중이라면 무한루프를 돌도록 안티디버깅 기술을 사용하였습니다.

연산의 결과로 “gdiplus.” 문자열을 얻을 수 있습니다.

Windows GDI+는 C/C++ 프로그래머를 위한 클래스 기반 API입니다. 이를 통해 애플리케이션은 비디오 디스플레이와 프린터 모두에서 그래픽 및 서식이 지정된 텍스트를 사용할 수 있습니다.

 

GDI+

GDI+는 다음과 같은 주요 기능을 포함합니다:

  1. 2D 그래픽 처리: 선, 도형, 텍스트 등 다양한 그래픽 요소를 그릴 수 있습니다.
  2. 이미지 처리: 다양한 이미지 형식(JPEG, PNG, BMP 등)의 로딩, 저장, 그리기를 지원합니다. 또한 이미지 조작(크기 조정, 회전, 필터링 등)을 할 수 있습니다.
  3. 폰트 및 텍스트 처리: 다양한 폰트 스타일과 텍스트 렌더링 옵션을 제공하여 텍스트를 그릴 수 있습니다.
  4. 애니메이션 및 트랜지션: 이미지 및 그래픽 요소의 애니메이션 및 트랜지션 효과를 만들 수 있습니다.
  5. 그래픽 입출력: 다양한 출력 장치에 그래픽을 렌더링할 수 있습니다. 화면, 프린터, 이미지 파일 등 다양한 출력 장치를 지원합니다.

 

 

이후 Imagebase와 모듈값을 가져와 동적으로 Import API를 가져오는 것을 확인할 수 있습니다. Dynamic_Funciton은 해시값을 이용하여 API를 가져옵니다.

(dword_4E0844에는 값이 들어있지 않기 때문에 동적으로 확인 필요)

위에서 확인한 XOR 디코딩 값이 dword_4E0944에 들어가지 않을까 추측

 

XOR 연산 방법이 조금씩 달라지지만 로직은 같음.

 

 

런타임 중에 동적으로 로드된 DLL 목록을 확인할 수 있습니다.

 

 

반복문

 

 

 

아무것도 바뀌지 않음. 왜?

 

 

 

암호화 경로 가져옴

 

이후에 자신을 재귀 실행 시키고 자신은 종료 ⇒ 즉, 어떤 인자값 또는 어떤 조건으로 실행시킬 때 드라이브 추가, 암호화 등의 행위가 발현

 


Adware

📎 참고 링크 : https://kyumoonhan.tistory.com/104

 

 

"EntryPoint"는 컴퓨터 프로그램의 실행이 시작되는 지점을 가리키는 용어입니다. 프로그램이 시작될 때, 운영 체제는 보통 프로그램의 메모리 내 어딘가에 있는 특정한 명령어나 함수로 제어를 전달합니다. 이 지점이 바로 EntryPoint라고 합니다. 예를 들어, C 프로그램에서는 주로 main() 함수가 EntryPoint가 됩니다.

 

"Optional Header"는 Portable Executable (PE) 파일 포맷에서 사용되는 헤더 중 하나입니다. PE 파일은 주로 Windows 운영 체제에서 사용되며, 프로그램의 실행에 필요한 많은 정보를 담고 있습니다. Optional Header에는 PE 파일의 구조와 동작에 대한 추가적인 정보가 포함되어 있습니다. 예를 들어, PE 파일이 사용하는 서브시스템, 메모리 요구 사항, 실행 옵션 등이 포함될 수 있습니다. "Optional"이라는 용어는 이 정보가 PE 파일의 실행에 있어서 필수적이지 않으며, 선택적으로 사용될 수 있다는 것을 의미합니다.

 

c로 디컴파일할 수 있는 IDA로 코드를 확인 → 아마 들어가면 main() 확인 가능