<WriteLine 함수 내용>


- 20번째 줄 → SystemNetConfigurationWebProxyScriptElementRetryIntervalValidatorL 클래스의 Check 함수를 통해 지역/국가 필터링, 필터링 대상이면 종료. 문제 없으면 계속 실행.
- 24번째 줄 → SystemNetNetworkInformationAdapterFlagsF의 Message 비어있는지 확인, 비어있으므로 실행X.
- 33번째 줄 → SystemUriComponentsg 클래스의 Read 함수를 통해 SystemNetNetworkInformationAdapterFlagsF 클래스의 IP를 Key를 이용해 복호화. → 복호화된 문자열(=실제 C&C 서버 목록)을 개별 서버 주소로 분리.
- 38번째 줄 →
dnlibDotNetWriterlMDTablet 클래스의 Id1 함수를 통해 서버 연결 테스트, 통과하면 if문 실행 → flag값 true로 조정, while문 탈출 - 49번째 줄 →
dnlibDotNetWriterlMDTablet 클래스의 Id5 함수를 통해 데이터 전송, 성공 시 while문 탈출 - 61번째 줄 → SystemDiagnosticsAssertSectionO 객체 동적 생성 후 Invoker 함수로 데이터 처리.
→ 난독화되어 있는 부분 때문에 완벽히 분석하는 데에 한계가 있음.
33번째 줄을 보면 네트워크 통신 기능을 포함하나, 해당 실행 환경/조건에서는 발동하지 않는 것으로 보임.
<호출된 함수 및 클래스 상세>
SystemNetConfigurationWebProxyScriptElementRetryIntervalValidatorL 클래스

Check 함수 :
- CultureInfo 클래스로 객체 생성(시스템 클래스로, 문화권에 관한 정보를 제공함.)
- 지역/국가 기반으로 필터링
- 제한되는 국가면 true 반환 후 중지, 제한X 국가면 false 반환 후 계속해서 실행(WriteLine 함수에서 중지됨)

필터링 국가
dnlibDotNetWriterlMDTablet 클래스
Id1 함수 : RequestConnection 함수와 Id3 함수 호출 결과 && 연산해서 반환 → 서버 연결 테스트, 통과하면 true
RequestConnection 함수 :
- IContextChannel 인터페이스로 객체 생성(찾아봐도 잘 모르겠음. 연결 상태 관리?)
- 입력받은 인자로 서버 주소 설정
IContextChannel contextChannel = new ChannelFactory<...>
(SystemCodeDomCodeDirectiveB.CreateBind(), new EndpointAddress(new Uri("net.tcp://" + address + "/"))
- 실제 연결 설정

Id3 함수 : 서버 연결 유지 확인 ???
Id4 함수 : 사용자 정보 수집?
SystemNetMailSupportedAuthl 구조체, DataContract 형태 → WCF
Id5 함수 : 수집된 데이터 전송????
MicrosoftWinUnsafeNativeMethodslMarshalJ 클래스, 이것 역시 DataContract 형태 → WCF
*DataContract = WCF에서 사용하는 개체에 대한 정보를 매핑시켜줌
*WCF(Windows Communication Foundation) = 한 서비스 종단점에서 다른 서비스 종단점으로 데이터를 비동기 메시지로 보낼 수 있음.

connector : dnlibDotNetWriterMetadataEventw 인터페이스 객체
SystemNetNetworkInformationAdapterFlagsF 클래스

정적 변수로 IP, ID, Message, Key, Version 값이 저장되어 있다.
특이사항 : IP와 ID 값이 난독화
SystemUriComponentsg 클래스

Xor 함수 : input 데이터를 stringKey로 XOR 연산
FromBase64 함수 : Base64 문자열 → 바이트 배열 → 문자열로 변환
BytesToStringConverted 함수 : UTF-8 문자열 변환
Read 함수 : if문으로 비어있으면 빈 문자열 반환, 아니면 Base64 디코딩 → XOR 복호화
MicrosoftWinUnsafeNativeMethodslMarshalJ 클래스


수집된 정보 패키징 같은데 Id1~Id13까지 전부 비슷한 형태라 파악하기 어려움.
SystemNetMailSupportedAuthl 구조체


이것 역 Id1~Id15까지 전부 비슷한 형태라 파악하기 어려움.
dnlibDotNetWriterMetadataEventw 인터페이스 → 구현체를 찾아야 전체적인 로직을 알 수 있음... → 근데 발견 X

인터페이스인 만큼, 사진의 코드만으로 기능을 파악하기가 어려워 추정만 했다..
Id1 함수 : 반환 타입 bool
Id2 함수 : 반환 타입 MicrosoftWinUnsafeNativeMethodsMarshalJ
Id3 함수 : SystemNetMailSupportedAuthI를 매개변수로 받음, 사용자 정보?
Id4 함수 : 사용자 정보?
Id5 함수 : 화면/디스플레이?
Id6 함수 : 방어 프로그램?
Id7 함수 : 언어 설정?
Id8 : 설치된 소프트웨어?
Id9 : 실행 중인 프로세스?
SystemSecurityAuthenticationCipherAlgorithmTypeG 클래스


추상 클래스 → 구현 클래스 : SystemDiagonostAssertSectionO
dnlibDotNetMDMetadataFactorye

Extract 함수 :
- T → 반드시 SystemSecurityAuthenticationCipherAlgorithmTypeG를 상속받는 클래스
- 버전 기반 분기 → 1이면 SystemDiagonostAssertSectionO 생성, 그 외는 SystemComponentModelTypeDescriptorComNativeDescriptionProviderH 생성
- 동적 객체 생성
-런타임에 동적으로 객체 생성
-리플렉션 기반 팩토리 패턴
→ SystemNetNetworkInformationAdapterFlagsF에 저장된 Version 정보는 1이므로 SystemDiagonostAssertSectionO 생성
SystemDiagonostAssertSectionO 클래스

SystemSecurityAuthenticationCipherAlgorithmTypeG의 구현 클래스
생성자 :
- Main, First : 메서드 목록 배열 → 메서드 집합 초기화
난독화된 함수명으로 메서드 참조


Invoker 함수 : SystemSecurityAuthenticationCipherAlgorithmTypeG의 추상 메서드를 구현, sdf9j3nasd 함수에 실제 작업을 위임
sdf9j3nasd 함수 :
- result.Id* 형태의 리스트 생성 → 데이터 컨테이너 초기화, 데이터 저장공간 준비
- 시스템 기본 정보 수집(IP, SystemCache 폴더 상태, 초기 검증)
- First 배열의 함수 순차 실행
- 추가 데이터 수집

LSIDsd2 함수 : Main 배열 함수 순차적 실행

Visible 함수 : SystemCache 폴더 관리 → 지속성 확보 및 흔적 관리
그외 난독화된 많은 함수들
'보안 > 악성코드' 카테고리의 다른 글
| RedlineStealer 악성코드 소스코드 분석(3) (3) | 2025.08.14 |
|---|---|
| RedlineStealer 악성코드 동적분석 (3) | 2025.08.04 |
| RedlineStealer 악성코드 소스코드 분석(1) (1) | 2025.07.28 |
| RedlineStealer 악성코드 정적분석 (2) | 2025.07.28 |
| LummaStealer 악성코드 소스코드 분석(2) (0) | 2025.07.07 |