일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준알고리즘
- 신경망구현
- 신경망
- 머신러닝
- 딥러닝파이썬
- C언어알고리즘
- 파이썬신경망
- 보안
- 스트림암호
- 파이썬
- 백준
- 신경망 학습
- 알고리즘
- 인공지능
- 항등함수
- 소프트맥스함수
- 버퍼오버플로우
- 달고나bof
- BOF
- 정보보안
- 8086CPU레지스터
- C언어 알고리즘
- c언어
- BOJ
- 활성화함수파이썬
- 딥러닝
- 밑바닥부터시작하는딥러닝
- C알고리즘
- FTZlevel10
- 신경망파이썬
- Today
- Total
목록<Project> (27)
HeeJ's
hivescan으로 메모리에서 CMHIVE의 실제 주소를 확인해보았다. 중간에 있는 0x000000000ebfb010을 은닉해보려고 한다. 우선 HxD로 0ebfb010으로 이동해주고 hivescan을 우회하는 방법은 두 가지 이다. 1. CMHIVE 영역인 CM10(43 4D 31 30)을 변조한다. 2. 0x000000000ebfb010의 시그니처 부분을 변조한다. 둘 중 한 가지만 적용해주어도 (저는 첫 번째 방법을 적용했습니다.) 0x000000000ebfb010이 은닉된 것을 확인할 수 있다. REGISTRY 영역 플러그인인 hivescan은닉 성공
메모리 분석 절차 3번째, NETWORK 영역 우회하기 그 중, 대표적인 NETWORK 플러그인인 netscan을 은닉해보려고 한다. 이 영역에서는 System의 netscan의 영역을 변조해보려고 한다. HxD를 이용해 System의 물리주소로 이동해주었다. TCP_LISTENER의 시그니처인 TcpL(54 63 70 4C)가 보였다. 이 영역을 전부 00으로 변조해주었다. 그리고 netscan을 다시 확인해주었다. System 영역이 사라진 것을(은닉) 확인할 수 있었다. NETWORK 영역 플러그인 netscan 은닉 성공!
deskthrd 필드는 EPROCESS의 Win32PROCESS에 있는 자신의 EPROCESS 주소를 변조해주어야 한다. MalwareProcess의 EPROCESS 구조체 중 Win32Process의 값을 확인 이 값을 hex 값으로 변환해 가상주소를 얻어주었다. 그리고 MalwareProcess의 KPROCESS의 DTB값을 확인해주고, 이 두 값을 이용해 물리주소 값을 확인해주었다. 0x5d1a5b0이 나왔다. 이 물리 주소 값으로 HxD를 이용해 이동해주었다. MalwareProcess의 가상주소 값이 리틀엔디안 방식으로 들어있었다. 이 값을 GoogleUpdate.e의 가상주소로 변조해주었다. 그리고 psxview를 다시 보면, MalwareProcess가 아예 사라져 은닉되었음을 알 수 있다...
session 필드는 LinkedList를 변조해서 은닉할 수 있는데, pslist를 은닉하기 위해 ActiveProcessLinks를 변조했기 때문에 session 필드를 은닉할 때는 SessionProcessLinks가 필요하다. SessionProcessLinks는 ActiveProcessLinks와 비슷한 역할을 한다. IMGSF50Start_x 의 SessionProcessLinks 값의 Flink 값을 MalwareProcess의 Flink 값으로 변조해서 IMGSF50Start_x의 Flinks 값이 MalwareProcess를 지나지않고, 바로 GoogleUpdate.e를 가리키게 해서 MalwareProcess를 은닉시켜 줄 것이다. (IMGSF50Start_x -> MalwareProc..
OBJECT_HEADER 구조체의 TypeIndex를 변조하면 pspcid와 csrss 두 필드 모두 우회할 수 있다. TypeIndex를 확인하기 위해 dt로 OBJECT_HEADER를 확인해주었다. TypeIndex는 0x18에 위치해있다. HxD로 MalwareProcess의 물리주소로 이동해주었다. EPROCESS의 시그니처를 확인하고, 이로부터 0x18만큼 위로 이동했다. OBJECTHEADER는 EPROCESS 위에 있기 때문이다. 07로 되어있는 TypeIndex 값을 00으로 변조해주었다. 그리고 psxview로 우회가 되었나 확인해주었다. pspcid와 csrss가 은닉되었음을 확인할 수 있다.
thrdproc 필드는 ExitTime을 변조해서 우회한다. MalwareProcess의 EPROCESS를 확인 ExitTime이 0x170의 위치에 있다는 것을 확인할 수 있었고, 값은 00: 00: 00 UTC+0000임을 확인할 수 있었다. 이에 관한 값을 확인하기 위해 HxD로 열어 MalwareProcess의 위치로 이동해주었다. EPROCESS의 시그니처를 확인하고 ExitTime이 이 위치에서 0x170 떨어져있기 때문에 0x170 뒤로 이동해주었다. 값이 전부 00 00 00 00 으로 이루어져있다. 적당한 수로 변조해주어야하기 때문에 다른 프로세스의 ExitTime값을 확인해주려고 한다. cmd.exe의 EPROCESS를 확인해보았다. ExitTime은 12: 24: 00 UTC+0000..
psscan은 Pool tag를 변조함으로써 은닉할 수 있다. HxD로 MalwareProcess의 물리주소로 이동해주었다. EPROCESS 헤더 시그니처인 03 00 58 00 위에 풀태그 시그니처인 50 72 6F E3을 볼 수 있다. 이 값은 psscan이 참조하기 때문에 이 값 4byte 중에 아무 값이나 변조하면 우회시킬 수 있다. psxview로 살펴보면 MalwareProcess의 psscan 은닉 성공
psxview의 필드들의 우회를 진행해보려고 한다. 실습환경 : Windows10 x64 psxview의 필드들 중, pslist 우회를 제일 먼저 진행해보고자 한다. 우회를 진행할 프로세스는 MalwareProcess이다. volshell을 실행시키고, ps() 명령어로 MalwareProcess의 가상주소를 확인해주었다. => 0xfffffa80090bb600 MalwareProcess의 Flink 주소를 IMGSF50Start_x의 Flink에 넣어주어 IMGSF50Start_x의 Flink가 GoogleUpdate를 가리키게 하여 MalwareProcess를 은닉. 위의 방법으로 pslist를 은닉해보려고 한다. 그러기 위해서 MalwareProcess의 EPROCESS를 확인해 0x188에 위치..