'전체 글'에 해당되는 글 22건

yara_signing_Exchange

2020. 5. 10. 02:21

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

최근 분석한 샘플(링크)과 유사한 샘플 지속적으로 확인되어 쉘코드까지 전부 분석을 진행하였으며 쉘코드가 동작하는 과정에서 Process Environment Block (이하 PEB)에서 Kernel32.dll의 주소를 얻어와 DLL을 로드하고 파일을 추가로 받아오는 과정을 정리한다. (Windows 7 x64 기준으로 작성됨)

 

쉘코드가 동작하면 우선 2E008F에서 문자열 "wininet"과 추후 API를 찾기 위한 고유값을 저장 후 TIB+0x30 위치의 PEB 구조체에 접근한다. 이후 PEB_LDR_DATA에서 InMemoryOrderModuleList에서 BaseDllName을 읽어온다. 이는 LDR_DATA_TABLE_ENTRY 구조체의 포인터로 프로세스 모듈의 정보를 담고 있다. (참고

 

이후 DllBase 주소를 가져와 PE 헤더 정보를 파싱하고 Export Table 정보를 가져와 데이터가 있는지 확인하는 구간과 저장된 고유값을 계산하고 비교하는 구간 그리고 찾는 api가 확인될 경우 호출하는 구간으로 나누어져 있다. 내부에 포함된 모듈의 경우 windows7 기준으로 초기화된 순서에 따라 현재 프로세스 -> ntdll -> kernel32 ... 순으로 확인하며 처음으로 LoadLibrary를 찾아 wininet.dll를 추가로 로드한다. 다음은 API에 대한 고유값을 나타낸다

 

- 0x0726774C : LoadLibrary

- 0xA779563A : InternetOpenA

- 0xC69F8957 : InternetConnectA

- 0x3B2E55EB : HttpOpenRequestA

- 0x869E4675 : InternetSetOpentionA

- 0x7B18062D : HttpSendRequestA

- 0x5DE2C5AA : GetLastError

- 0x315E2145 : GetDeskTopWindow

- 0x0BE057B7 : InternetErrorDlg

- 0xE553A458 : VirtualAlloc

- 0xE2899612 : InternetReadFile

블로그 이미지

bbbbox

해당 블로그는 개인 저장공간으로 악의적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다. 주의해주시길 바랍니다.

,