안녕하세요, 포장 풀기에 대한 또 다른 섹션으로 돌아왔습니다.
여기에는 Hancitor라는 새로운 멀웨어 샘플이 있습니다.
리소스 섹션에서 다운로드하여 압축을 풀고 악성 코드 샘플이라는 데스크톱 폴더에
넣습니다.
따라서 이 포장을 푸는 데 사용할 기술은 리소스 섹션에서도 다운로드할 수 있는 여기
메모의 단계를 따르는 것입니다.
그리고 노트의 첫 번째 부분은 Hancitor에 관한 내용입니다.
자세한 내용은 여기에서 확인할 수 있습니다.
그리고 이 멀웨어의 포장을 풀기 위해 연결할 두 가지 API에 대한 두 가지 참조가 있습니다.
첫 번째는 VirtualProtect이며, 다음은 MSDN 참조입니다.
두 번째는 VirtualAlloc이며, 여기에 MSDN 참조가 있습니다.
포장을 풀고 매핑을 해제하는 단계는 다음과 같습니다.
먼저 VirtualAlloc 및 VirtualProtect 중단점을 설정한 다음 모든 중단점이 없어질 때까지
F9를 실행합니다.
따라서 첫 번째 단계는 가상 할당 및 가상 보호가 몇 번 호출되었는지 확인하는 것입니다.
개수를 파악하고 싶습니다. 그런 다음 x64dbg의 중단점 탭에서 각 가상 보호 및 가상 할당에 몇 번
도달했는지 기록합니다.
이제 마지막 중단점이 언제인지, 언제 덤프해야 하는지 알 수 있습니다.
그런 다음 가상 머신을 복원하고 반복합니다.
하지만 이번에는 마지막 중단점까지 각 인수와 반환값을 따라가며 VirtualAlloc의 값을 확인합니다.
마지막 중단점은 -가 0x23으로 반환되고 0이 4개 뒤따르는 VirtualAlloc이라는 것을 알 수
있습니다.
반품 주소가 제 주소와 다를 수도 있습니다.
그런 다음 Process Hacker를 사용하여 0x234 0을 덤프하고 PE Bear로 매핑을 해제합니다.
그런 다음 IDA에 확인합니다.
이것이 이 특정 샘플의 기본 단계입니다.
이제 시작해 보겠습니다.
가장 먼저 해야 할 일은 IDA에 이미 포장이 풀렸는지 확인하는 것입니다.
그래서 IDA를 사용하여 Hancitor를 열었습니다.
새로운.
폴더에서 샘플을 선택하고 열기를 클릭합니다.
확인을
클릭합니다.
함수 이름 창에서 함수가 하나만 있음을 알 수 있습니다.
즉, 확실히 꽉 차 있으며 실제 프로그램은 하나의 기능일
수 없습니다.
수백 가지의 기능이 있습니다.
따라서 여기에서 의심스러운 전화가 있음을 알 수 있습니다.
에 대한 전화는 의심스러운 전화입니다.
예를 들어, 이 경우 - 전화와 같이 레지스터에 대한 호출이 표시될 때마다 호출합니다.
매우 의심스러운 전화입니다.
아마도 코드의 압축을 푸는 일종의 루틴을 호출하거나 이미 압축이 풀린 코드의 일부를 호출하는
것일 수도 있습니다.
또 다른 의심스러운 통화는 알 수 없는 번호로 이동하는 경우입니다(예: 계산대로 이동).
따라서 이것은 아마도 포장되어 있음을 확인합니다.
이제 이 파일을 닫고 x64dbg로 이동하여 이 샘플을 열 수 있습니다.
32비트 샘플이므로 x32dbg를 클릭합니다.
옵션과 환경설정을 클릭하고 시스템 중단점을 선택 해제하고 콜백을 선택 해제하여 항목 중단점만
선택된 상태로 둡니다.
그런 다음 저장을 클릭합니다.
이제 샘플을 열어봅니다.
데스크톱 멀웨어 코드 샘플 폴더로 이동합니다.
여기에서 모든 파일을 클릭한 다음 설치를 선택합니다. 휴지통으로 이동하여 엽니다.
이제 우리는 진입점에 도달했습니다.
따라서 두 개의 중단점을 설정하겠습니다.
첫 번째 중단점은 VirtualAlloc입니다.
Enter 키를 누릅니다.
두 번째 중단점은 VirtualProtect입니다.
Enter 키를 누릅니다.
이제 중단점 탭을 확인하여
확인합니다. 두 중단점이 모두 설정되어 있는지 확인합니다. VirtualAlloc은 코드 언패킹을
위한 메모리를 할당하는 것입니다. 가상 보호는 메모리에 대한 권한 비트를 변경하는 것입니다.
이제 첫 번째 라운드에서는 이러한 각 중단점을 실행하여 각 API가 몇 번이나 호출되었는지
계산해 보겠습니다.
이제 시작하겠습니다.
이제 이것은 한 번 맞았습니다.
다시 실행합니다.
이제 두 번 맞았습니다.
이건 딱 한 번입니다.
완료될 때까지 클릭하세요.
왼쪽 하단에 실행 중 상태가 표시될 때까지 계속 클릭합니다.
이제 가상 할당에 5번, 가상 보호에 1번 공격을 받은 것을 확인했습니다.
VirtualAlloc이 6번 호출되었습니다.
이제 6번 볼 수 있습니다. 거짓입니다.
다시 한 번 더 누르세요.
일곱 번.
다시 실행합니다.
이 버튼은 F9입니다.
바로 가기는 F9입니다.
자, 이제 실제로 실행 중입니다.
따라서 VirtualAlloc은 7번, VirtualProtect는 한 번 공격당했습니다.
그래서 기억하기 쉽도록 메모장을 사용하여
여기에 메모를 남깁니다.
여기 메모장에는 VirtualAlloc이 7번, VirtualProtect가 한 번 실행된 것을 기록해 두었습니다.
이제 이 숫자를 알았으니 언제 덤프해야 하는지 알 수 있습니다.
이제 가상 머신을 재설정하겠습니다.
따라서 가상 머신을 재설정할 때 이 메모가 남아 있도록 먼저 이 메모를 저장하세요.
따라서 이 메모를 멀웨어 코드 샘플 폴더에 저장하고 간단히
카운트, 중단점 카운트,
BP 카운트라고
적고 저장해 보겠습니다.
이제 가상 머신을 재설정할 수 있습니다.
모든 것을 닫습니다.
그런 다음 닫습니다.
이제 이 중단점 수는 가상
머신을 재설정하면 손실되므로
어딘가에 저장해 두어야 합니다.
따라서 이 파일을 저장해야 합니다.
복사하여 공유 폴더 어딘가에 넣으세요.
좋아요, 이제 어떻게 저장할지는 여러분에게 맡기겠습니다.
여기 대신 호스트 컴퓨터의 폴더를 직접 열어 메모를 적을 수도 있습니다.
이제 이 기계를 재설정하고 다음 동영상에서 포장을 푸는
과정을 보여드리겠습니다.
시청해 주셔서 감사합니다.