-
Notifications
You must be signed in to change notification settings - Fork 15
/
patch.txt
157 lines (128 loc) · 4.79 KB
/
patch.txt
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//2017 - 11 - 27
[GUI]
첫 실행 초기화 업데이트
- 레지스트리 기본 경로 등록
- 기본 보호프로세스 등록
보호프로세스 수정시 저장기능
[SYS]
보호 프로세스 100개 제한
[DLL]
운영체제 버전 확인 코드 추가
//2017 - 11 - 28
[DLL]
프로그램 차단시 Shell_NotifyIcon 출력
로깅 함수 작성 ( 로깅 파일주소는 등록되어 있는 레지스트리 )
//2017 - 11 - 29
[분석]
다른 Anti-Exploit 프로그램 분석
[GUI]
Settings 탭 추가
- 여러 체크 박스 등록(기능 추가 목적)
General 탭에 여러 라벨및 버튼추가(기능 추가 목적)
[DLL]
Debug 메시지 출력 기능 강화(개발 편의성)
운영체제별 출력 루틴 차별화
프로세스별로 다른동작하기 위해 루틴 개발중
//2018 - 03 - 06
[SYS]
APC Inject 개선
KeAttachProcess -> KeStackAttachProcess [브라우저 인젝션 버그 수정]
ObRegisterCallbacks 를 이용한 필터 제작 - 프로세스,파일 - 현재는 비활성화 로직
[DLL]
API Hooking
- Hooking 프레임워크 MadCodeHook 사용 (x86,x64) - 속도 향상
대상 API
- CreateProcessW WinExec HeapCreate VirtualAlloc VirtualProtect WriteProcessMemory SetProcessDEPPolicy InternetReadFile InternetReadFileExW URLDownloadToFileW URLDownloadToFileA ShellExecuteW LoadLibraryExW GetModuleHandleW _wsystem system
탐지 로직 개발
- Gadget Detect , Heap Execution -> Use After Free , Heap Spray 등 가장 많이 쓰이는 익스플로잇 탐지 가능
- WScript의 경우 서명된 파일만 프로세스를 생성할 수 있음
[개선해야할 사항]
드라이버가 계속 올라와줄 수 있도록 서비스 exe 가 동작해야함.
각각의 프로세스에 DLL이 인젝션되어 메모리 소모가 크므로 하나의 프로세스에서 이벤트를 받아 처리하도록 로직의 개선이 필요함.
//2018 - 03 - 13
[전체]
빌드 경로 MSX에서 MSX-Release 로 변경
[DLL]
Hook된 함수들 탐지로직 추가
[MSX-DLL]
MiniFilter 로드/언로드 기능 추가 [ Without Inf File ]
레거시 드라이버 로드/언로드 주석처리
[msx-svc]
프로젝트 생성
추후 서비스 프로세스 개발예정
[SYS]
레거시 드라이버에서 미니필터로 변경
FltRegisterFilter , FltCreateCommunicationPort 로 포트생성 PsSetCreateProcessNotifyRoutine 를 통해 프로세스 생성 알림
[개선해야할 사항]
미니필터에서 FltSendMessage 로 전달되는 내용을 유저모드에서 받을 수 있는 함수 개발
//2018 - 03 - 15
[msx-svc]
서비스 프로세스 뼈대 생성
FltGetMessage 로 커널로부터 프로세스 생성 메시지 입력
[DLL]
vuln_check라는 별도의 함수로 탐지 함수 작성
//2018 - 03 - 19
[MSX-SVC]
권한에 따른 레지스트리 정보를 못 읽어들이는 문제 해결
[GUI]
GUI에서 하는 모든 커널 동작을 빼고, MSX-DLL 로 코드 이전!
[SYS]
현재 부팅시점에서 stricmp 문제를 try로 해결해놨다. 근본적인 문제로 접근해야한다.!
미니필터가 항상 재시작되며 초기화를 서비스 프로세스가 하게해줌
[MSX_DLL]
FirstMSX() 함수 추가
InitDriver() 수정
[전체적으로]
엄청바꿨다. 이거 올리고 바로 다음 버전으로 릴리즈예정
[개선해야할 사항]
이 동작을 다른PC에서도 테스트하며 가다듬을 예정.
//2018 - 05 - 15
[DLL]
MADCodeHOOK 라이브러리를 사용하는 부분을 모두 쳐내고 관련라이브러리를 삭제했다.
그리고 MIT 라이센스인 PolyHook를 사용했다. 현재는 WinExec,CreateProcess,URLDownloadToFile만 검증했으나
대체적으로 사용하는데 문제가 없어보인다. 그러므로 현재는 빌드가 가능하다.
//2018 - 05 - 16
[DLL]
PolyHook 라이브러리가 많은 어려움과 문제를 일으켜 여러 테스트를 진행해보고, minhook 모듈을 선택했다.
해당 라이브러리의 라이센스조항은 FreeBSD로 확인되어 사용가능하다 ^^!
//2018 - 05 - 18
[전체적으로]
error fix
[개선해야할 사항]
서비스를 강화해야한다.
1. dll 올라온것들에 대해 후킹진행. 예를 들어 urlmon.dll 이올라올때 urlmon.dll 관련후킹을 진행해야한다. 현재는
한번에 몰아서 후킹하고있다..
2. msxsvc.exe에서 dll하고 통신해서 로그를남겨야한다. 현재는 dll 파일자체에 너무 기능이 몰려있어서 리소스낭비가 크다.
//2018 - 05 - 23
[DLL]
밑에있는 SYS 와 같은 내용이지만 LdrRegisterDllNotification 을 통해서 올라오는 라이브러리에 대해 후킹할 수 있는 기반이된다.
SYS단에서 해결할지 DLL단에서 해결할지에 대한 고민을 진행중.
[SYS]
FltSendMessage 를 통해서 LoadImageNotifyRoutine 로부터 유저모드로 올라오는 라이브러리를 전송하고있다.
커널으로부터 전달받은 관련된 작업을 할 수 있을듯!
//2018 - 05 - 24
[GUI]
Tray Icon 생성. 이미지도 정했으며, 트레이 메뉴에 무엇을 둘까 고민중. 현재는 더블클릭하면 창이 나타나는정도.
[msx-svc]
커널로부터 로드되는 이미지에 대한 정보들을 받는 쪽에서 IOCP를 쓸 때 코드가 직관적이지 못해서 주석 및 정리좀함
[DLL]
추가적으로 로딩되는 DLL로부터 후킹 진행코드 추가
//2018 - 05 - 25
[README.MD]
내용 및 구조 변경
[MSX-DLL]
FirstMSX호출시 시작프로그램 레지스트리 등록
[GUI]
최초 실행를 제외한 시작프로그램에 의한 실행 등 트레이로 실행되게 변경. 트레이를 더블클릭하면 GUI를 확인할 수 있다.
그리고 종료시에도 트레이로 이동되며, 오른쪽 마우스를 이용해 종료시킬 수 있으나 "Stop Detection" 을 해주지 않으면 그대로
응용프로그램을 보호
//2018 - 05 - 28
[GUI]
보호할 프로세스 지정시 Script폴더내에 있는 lua 지정해야함.
[DLL]
프로세스에 인젝션 이후 lua를 불러온다. lua에는 후킹해야할 함수들에 대한 정보와 로그 등을 얻을 수 있다.
lua쪽을 더 강화하여 보호 프로세스 별로 커스터마이징을 지원할 예정이다.
----lua 함수들 추가--- General.lua 참고
//2018 - 06 - 04
[msx-svc]
Fix PowerOnOff when after reboot