WEBVTT

00:00.650 --> 00:06.020
안녕하세요, 포장 풀기에 대한 또 다른 섹션으로 돌아왔습니다.

00:06.680 --> 00:10.850
여기에는 Hancitor라는 새로운 멀웨어 샘플이 있습니다.

00:11.300 --> 00:18.380
리소스 섹션에서 다운로드하여 압축을 풀고 악성 코드 샘플이라는 데스크톱 폴더에

00:18.410 --> 00:19.800
넣습니다.

00:19.820 --> 00:27.860
따라서 이 포장을 푸는 데 사용할 기술은 리소스 섹션에서도 다운로드할 수 있는 여기

00:27.860 --> 00:31.310
메모의 단계를 따르는 것입니다.

00:31.550 --> 00:35.420
그리고 노트의 첫 번째 부분은 Hancitor에 관한 내용입니다.

00:35.450 --> 00:36.770
자세한 내용은 여기에서 확인할 수 있습니다.

00:37.100 --> 00:46.880
그리고 이 멀웨어의 포장을 풀기 위해 연결할 두 가지 API에 대한 두 가지 참조가 있습니다.

00:47.330 --> 00:52.010
첫 번째는 VirtualProtect이며, 다음은 MSDN 참조입니다.

00:52.040 --> 00:57.950
두 번째는 VirtualAlloc이며, 여기에 MSDN 참조가 있습니다.

00:58.490 --> 01:01.830
포장을 풀고 매핑을 해제하는 단계는 다음과 같습니다.

01:02.010 --> 01:11.520
먼저 VirtualAlloc 및 VirtualProtect 중단점을 설정한 다음 모든 중단점이 없어질 때까지

01:11.520 --> 01:13.260
F9를 실행합니다.

01:13.380 --> 01:19.950
따라서 첫 번째 단계는 가상 할당 및 가상 보호가 몇 번 호출되었는지 확인하는 것입니다.

01:19.980 --> 01:28.410
개수를 파악하고 싶습니다. 그런 다음 x64dbg의 중단점 탭에서 각 가상 보호 및 가상 할당에 몇 번

01:28.410 --> 01:30.150
도달했는지 기록합니다.

01:30.600 --> 01:35.250
이제 마지막 중단점이 언제인지, 언제 덤프해야 하는지 알 수 있습니다.

01:36.150 --> 01:40.040
그런 다음 가상 머신을 복원하고 반복합니다.

01:40.050 --> 01:49.410
하지만 이번에는 마지막 중단점까지 각 인수와 반환값을 따라가며 VirtualAlloc의 값을 확인합니다.

01:50.120 --> 01:59.240
마지막 중단점은 -가 0x23으로 반환되고 0이 4개 뒤따르는 VirtualAlloc이라는 것을 알 수

01:59.240 --> 02:00.440
있습니다.

02:00.440 --> 02:04.100
반품 주소가 제 주소와 다를 수도 있습니다.

02:04.970 --> 02:12.200
그런 다음 Process Hacker를 사용하여 0x234 0을 덤프하고 PE Bear로 매핑을 해제합니다.

02:12.410 --> 02:13.970
그런 다음 IDA에 확인합니다.

02:14.150 --> 02:18.320
이것이 이 특정 샘플의 기본 단계입니다.

02:18.770 --> 02:20.020
이제 시작해 보겠습니다.

02:20.030 --> 02:25.400
가장 먼저 해야 할 일은 IDA에 이미 포장이 풀렸는지 확인하는 것입니다.

02:26.030 --> 02:30.230
그래서 IDA를 사용하여 Hancitor를 열었습니다.

02:32.070 --> 02:32.880
새로운.

02:34.040 --> 02:38.660
폴더에서 샘플을 선택하고 열기를 클릭합니다.

02:39.410 --> 02:39.740
확인을

02:39.740 --> 02:40.430
클릭합니다.

02:41.960 --> 02:46.270
함수 이름 창에서 함수가 하나만 있음을 알 수 있습니다.

02:46.310 --> 02:50.720
즉, 확실히 꽉 차 있으며 실제 프로그램은 하나의 기능일

02:50.720 --> 02:52.220
수 없습니다.

02:52.220 --> 02:53.960
수백 가지의 기능이 있습니다.

02:54.800 --> 02:58.310
따라서 여기에서 의심스러운 전화가 있음을 알 수 있습니다.

03:00.390 --> 03:03.210
에 대한 전화는 의심스러운 전화입니다.

03:03.210 --> 03:09.820
예를 들어, 이 경우 - 전화와 같이 레지스터에 대한 호출이 표시될 때마다 호출합니다.

03:10.320 --> 03:12.690
매우 의심스러운 전화입니다.

03:13.230 --> 03:22.200
아마도 코드의 압축을 푸는 일종의 루틴을 호출하거나 이미 압축이 풀린 코드의 일부를 호출하는

03:22.200 --> 03:24.780
것일 수도 있습니다.

03:25.710 --> 03:33.360
또 다른 의심스러운 통화는 알 수 없는 번호로 이동하는 경우입니다(예: 계산대로 이동).

03:34.050 --> 03:37.980
따라서 이것은 아마도 포장되어 있음을 확인합니다.

03:38.460 --> 03:45.420
이제 이 파일을 닫고 x64dbg로 이동하여 이 샘플을 열 수 있습니다.

03:46.140 --> 03:52.320
32비트 샘플이므로 x32dbg를 클릭합니다.

03:53.070 --> 04:00.670
옵션과 환경설정을 클릭하고 시스템 중단점을 선택 해제하고 콜백을 선택 해제하여 항목 중단점만

04:00.670 --> 04:02.590
선택된 상태로 둡니다.

04:02.920 --> 04:04.360
그런 다음 저장을 클릭합니다.

04:04.750 --> 04:06.730
이제 샘플을 열어봅니다.

04:08.410 --> 04:11.770
데스크톱 멀웨어 코드 샘플 폴더로 이동합니다.

04:12.340 --> 04:19.000
여기에서 모든 파일을 클릭한 다음 설치를 선택합니다. 휴지통으로 이동하여 엽니다.

04:21.020 --> 04:23.720
이제 우리는 진입점에 도달했습니다.

04:23.870 --> 04:26.540
따라서 두 개의 중단점을 설정하겠습니다.

04:28.070 --> 04:31.550
첫 번째 중단점은 VirtualAlloc입니다.

04:37.080 --> 04:37.830
Enter 키를 누릅니다.

04:38.670 --> 04:42.480
두 번째 중단점은 VirtualProtect입니다.

04:47.580 --> 04:48.450
Enter 키를 누릅니다.

04:49.170 --> 04:53.130
이제 중단점 탭을 확인하여

04:53.160 --> 05:00.630
확인합니다. 두 중단점이 모두 설정되어 있는지 확인합니다. VirtualAlloc은 코드 언패킹을

05:00.630 --> 05:06.750
위한 메모리를 할당하는 것입니다. 가상 보호는 메모리에 대한 권한 비트를 변경하는 것입니다.

05:07.650 --> 05:15.810
이제 첫 번째 라운드에서는 이러한 각 중단점을 실행하여 각 API가 몇 번이나 호출되었는지

05:15.810 --> 05:19.590
계산해 보겠습니다.

05:20.100 --> 05:21.390
이제 시작하겠습니다.

05:22.620 --> 05:24.870
이제 이것은 한 번 맞았습니다.

05:25.810 --> 05:26.620
다시 실행합니다.

05:28.780 --> 05:31.170
이제 두 번 맞았습니다.

05:31.180 --> 05:32.260
이건 딱 한 번입니다.

05:32.710 --> 05:35.230
완료될 때까지 클릭하세요.

05:35.920 --> 05:40.090
왼쪽 하단에 실행 중 상태가 표시될 때까지 계속 클릭합니다.

05:40.870 --> 05:47.890
이제 가상 할당에 5번, 가상 보호에 1번 공격을 받은 것을 확인했습니다.

05:48.100 --> 05:49.990
VirtualAlloc이 6번 호출되었습니다.

05:49.990 --> 05:53.470
이제 6번 볼 수 있습니다. 거짓입니다.

05:53.470 --> 05:56.170
다시 한 번 더 누르세요.

05:58.780 --> 06:00.070
일곱 번.

06:02.230 --> 06:02.920
다시 실행합니다.

06:03.520 --> 06:05.380
이 버튼은 F9입니다.

06:06.190 --> 06:07.630
바로 가기는 F9입니다.

06:09.050 --> 06:11.210
자, 이제 실제로 실행 중입니다.

06:11.330 --> 06:17.600
따라서 VirtualAlloc은 7번, VirtualProtect는 한 번 공격당했습니다.

06:17.750 --> 06:22.640
그래서 기억하기 쉽도록 메모장을 사용하여

06:23.720 --> 06:27.350
여기에 메모를 남깁니다.

06:28.910 --> 06:45.290
여기 메모장에는 VirtualAlloc이 7번, VirtualProtect가 한 번 실행된 것을 기록해 두었습니다.

06:46.220 --> 06:51.310
이제 이 숫자를 알았으니 언제 덤프해야 하는지 알 수 있습니다.

06:51.350 --> 06:55.310
이제 가상 머신을 재설정하겠습니다.

06:55.310 --> 07:00.800
따라서 가상 머신을 재설정할 때 이 메모가 남아 있도록 먼저 이 메모를 저장하세요.

07:01.010 --> 07:05.780
따라서 이 메모를 멀웨어 코드 샘플 폴더에 저장하고 간단히

07:06.660 --> 07:08.880
카운트, 중단점 카운트,

07:12.570 --> 07:13.650
BP 카운트라고

07:13.680 --> 07:16.560
적고 저장해 보겠습니다.

07:18.060 --> 07:20.520
이제 가상 머신을 재설정할 수 있습니다.

07:21.750 --> 07:23.280
모든 것을 닫습니다.

07:26.330 --> 07:28.340
그런 다음 닫습니다.

07:28.640 --> 07:30.200
이제 이 중단점 수는 가상

07:30.200 --> 07:31.820
머신을 재설정하면 손실되므로

07:32.450 --> 07:35.960
어딘가에 저장해 두어야 합니다.

07:36.170 --> 07:38.540
따라서 이 파일을 저장해야 합니다.

07:38.570 --> 07:42.860
복사하여 공유 폴더 어딘가에 넣으세요.

07:43.910 --> 07:47.600
좋아요, 이제 어떻게 저장할지는 여러분에게 맡기겠습니다.

07:47.630 --> 07:54.920
여기 대신 호스트 컴퓨터의 폴더를 직접 열어 메모를 적을 수도 있습니다.

07:55.430 --> 08:01.160
이제 이 기계를 재설정하고 다음 동영상에서 포장을 푸는

08:01.160 --> 08:04.460
과정을 보여드리겠습니다.

08:05.000 --> 08:06.260
시청해 주셔서 감사합니다.
