목차
개정판을 내며... 1
저자 소개 5
목차 6
1부. 백신 개발을 위한 힘찬 첫걸음 17
1장. 시작하기 전에 18
1.1 들어가며 18
1.2 백신 개발에 필요한 지식 19
1.3 이 책의 주요 독자층 20
2장. 악성코드와 백신의 이모저모 22
2.1 악성코드 22
2.1.1 악성코드란 무엇인가? 22
2.1.2 악성코드의 역사 22
2.1.3 악성코드 분류법 24
2.1.4 악성코드 명명법 26
2.2 백신 28
2.2.1 백신이란 무엇인가? 28
2.2.2 국내 백신의 역사 28
2.3 키콤백신 30
2.3.1 개요 30
2.3.2 키콤백신의 정신 32
2.3.3 하우리 창업과 바이로봇의 개발 33
2.4 키콤백신 프로젝트 34
2.4.1 개요 35
2.4.2 Freeware 35
2.4.3 오픈 소스 35
2.4.4 라이선스 36
2.4.5 키콤백신 프로젝트에 참여하는 방법 36
2.5 정리 39
2.6 참고 자료 40
3장. 개발 환경을 구축하자 41
3.1 운영체제 고려 사항 42
3.2 파이썬 42
3.2.1 파이썬 설치 43
3.2.2 파이썬 실행 44
3.2.3 파이썬 외부 패키지 설치 방법 44
3.3 프로그래밍 에디터의 선택 45
3.3.1 Notepad++ 46
3.3.1.1 Notepad++ 설치 46
3.3.1.2 Notepad++ 환경 설정 47
3.3.1.3 Notepad++ 사용 예 49
3.3.2 PyCharm 52
3.3.2.1 PyCharm 설치 52
3.3.2.2 PEP8 (파이썬 코딩 스타일 가이드라인) 54
3.4 정리 57
3.5 참고 자료 57
2부. 백신 세상으로 들어가기 58
4장. 전용 백신 개발하기 59
4.1 전용 백신이란? 59
4.2 EICAR 전용 백신 개발하기 60
4.2.1 EICAR Test 파일이란? 60
4.2.2 EICAR Test 파일 준비하기 61
4.2.3 파이썬을 이용한 파일 읽기 62
4.2.4 악성코드 진단 문자열(시그니처) 비교하기 63
4.2.5 악성코드 치료하기 64
4.3 오진 없는 EICAR 전용 백신 만들기 64
4.3.1 악성코드 진단 문자열 길이와 오진 가능성 65
4.3.2 MD5 해시를 사용하여 오진 가능성 줄이기 66
4.3.3 MD5 해시를 사용한 EICAR 전용 백신 66
4.4 정리 67
4.5 참고 자료 68
5장. 다양한 악성코드를 진단/치료하기 69
5.1 새로운 악성코드 준비하기 69
5.1.1 Dummy Test 파일이란? 69
5.2 다양한 악성코드 진단하기 69
5.2.1 파이썬의 리스트를 이용하여 악성코드 DB 정의하기 70
5.2.2 파이썬의 반복문 - for 73
5.2.3 악성코드 DB 가공하기 76
5.2.4 악성코드 진단하기 77
5.3 백신의 진단 속도를 높이는 방법 구상하기 78
5.3.1 진단 속도가 느려진 이유 파악하기 78
5.3.2 파일 크기를 활용한 진단 속도 높이기 79
5.4 정리 81
5.5 참고 자료 81
6장. 악성코드 패턴을 분리하기 82
6.1 악성코드 패턴을 별도 파일로 분리하기 82
6.1.1 virus.db 파일 생성하기 82
6.1.2 VirusDB 수정하기 83
6.2 악성코드 패턴 파일에서 패턴 로딩하기 83
6.2.1 virus.db 파일에서 VirusDb로 악성코드 패턴 로딩하기 83
6.2.2 전체 소스 코드 확인하기 84
6.3 악성코드 패턴 파일 암/복호화하기 86
6.3.1 암호화 도구 만들기 87
6.3.2 복호화 라이브러리 만들기 89
6.3.3 백신 프로그램에 복호화 라이브러리 적용하기 90
6.4 정리 93
6.5 참고 자료 93
7장. 악성코드 진단/치료 모듈 분리하기 94
7.1 악성코드 진단 모듈 만들기 94
7.1.1 MD5 진단 모듈 만들기 94
7.1.2 특정 위치 진단 모듈 만들기 99
7.2 악성코드 치료 모듈 만들기 102
7.3 악성코드 패턴 파일 수정하기 103
7.4 백신 프로그램 수정하기 105
7.5 정리 108
7.6 참고 자료 108
8장. 전용 백신 배포본 만들기 109
8.1 Pyinstaller 109
8.1.1 다운로드 및 설치 109
8.2 Build 배치 프로그램 만들기 111
8.3 윈도우 실행 파일 테스트하기 111
8.3.1 exit 오류 없애기 112
8.3.2 악성코드 진단/치료 모듈을 외부에서 로딩하기 113
8.3.3 새로운 악성코드 진단(scanmod) 모듈을 적용하기 115
8.3.4 scanmod.py 컴파일하기 116
8.4 정리 117
8.5 참고 자료 117
3부. 유지보수가 편리한 백신 구조의 고민 119
9장. 플러그인 백신 엔진 개발하기 120
9.1 외산 백신 엔진의 구조 120
9.1.1 카스퍼스키 백신 엔진 120
9.1.2 비트디펜더 백신 엔진 121
9.2 플러그인 구조의 백신 엔진 122
9.2.1 백신 업체들의 당면 과제들 123
9.2.2 플러그인 구조의 대표적인 예는 운영체제 124
9.2.3 플러그인 구조의 백신 엔진 모습 124
9.3 플러그인 엔진의 주요 함수 125
9.3.1 플러그인 엔진의 구동 시나리오 125
9.3.2 플러그인 엔진의 주요 함수 127
9.4 dummy 플러그인 엔진 개발하기 128
9.4.1 init 함수 128
9.4.2 uninit 함수 130
9.4.3 scan 함수 131
9.4.4 disinfect 함수 135
9.4.5 listvirus 함수 138
9.4.6 getinfo 함수 139
9.5 eicar 플러그인 엔진 개발하기 141
9.6 정리 146
9.7 참고 자료 147
10장. 플러그인 백신 엔진의 암/복호화 도구 만들기 148
10.1 새로운 암/복호화 도구가 필요한 이유 148
10.2 암/복호화 방법 고민하기 150
10.2.1 RC4 알고리즘 151
10.2.1.1 RC4 소스코드 152
10.3 암/복호화 도구 만들기 153
10.3.1 플러그인 엔진의 암호화 후 모습 구상하기 153
10.3.2 암/복호화 도구 만들기 154
10.3.2.1 암호화 도구 만들기 154
10.3.2.2 복호화 모듈 만들기 159
10.4 정리 164
10.5 참고 자료 164
11장. 플러그인 백신 엔진을 동적 로딩하기 165
11.1 암호화된 플러그인 엔진을 동적 로딩하기 165
11.2 암호화된 플러그인 엔진의 함수 호출하기 168
11.3 정리 170
11.4 참고 자료 170
12장. 백신 커널 개발하기 171
12.1 백신 커널의 역할 171
12.2 백신 프로젝트의 폴더 구조 172
12.3 백신 커널 개발하기 173
12.3.1 플러그인 엔진의 로딩 우선순위 정하기 173
12.3.2 전체 플러그인 엔진의 인스턴스 생성하기 177
12.3.3 전체 플러그인 엔진 초기화(init)/종료(uninit)하기 182
12.3.4 전체 플러그인 엔진의 정보 획득하기(getinfo) 185
12.3.5 전체 플러그인 엔진으로부터 진단/치료 가능한 악성코드 목록 획득하기(listvirus) 186
12.3.6 전체 플러그인 엔진에게 악성코드 검사 요청하기(scan) 190
12.3.7 특정 플러그인 엔진에게 악성코드 치료 요청하기(disinfect) 193
12.4 공유 라이브러리 설계하기 196
12.5 공유 라이브러리를 이용한 eicar 플러그인 엔진 수정하기 199
12.6 정리 206
12.7 참고 자료 207
13장. 백신 콘솔 프로그램 개발하기 208
13.1 백신 콘솔 프로그램이 필요한 이유 208
13.2 글자에 색깔을 입히기 208
13.3 백신 콘솔 프로그램 옵션 처리하기 212
13.4 백신 커널 연동하기 216
13.4.1 백신 커널 준비하기 216
13.4.2 전체 플러그인 엔진의 버전 정보 출력하기 219
13.4.3 진단/치료 가능한 악성코드 개수 출력하기 221
13.4.4 백신 프로그램의 옵션을 백신 커널에 전달하기 224
13.5 전체 폴더에 대해 악성코드 검사하기 226
13.5.1 기존 scan 함수 변경하기 226
13.5.2 전체 폴더를 검사할 수 있도록 scan 함수 새롭게 만들기 229
13.5.3 scan 콜백 함수 만들기 231
13.5.4 악성코드 검사하기 233
13.6 최종 악성코드 검사 결과 출력하기 234
13.7 다중 플랫폼을 위해 고민하기 241
13.8 정리 242
13.9 참고 자료 242
4부. 압축 파일 내부의 악성코드 진단/치료에 대한 고민 244
14장. 압축 파일? 임베딩 파일? 245
14.1 압축 파일과 임베딩 파일의 정의 245
14.2 압축 파일에 대한 생각 바꾸기 246
14.3 정리 247
14.4 참고 자료 248
15장. ZIP 파일 처리하기 249
15.1 ZIP 파일 여부 확인하기 249
15.2 ZIP 파일 압축 내부 목록 얻기 249
15.3 ZIP 파일 압축 해제하기 250
15.4 ZIP 파일로 압축하기 250
15.5 정리 251
15.6 참고 자료 252
16장. 플러그인 백신 엔진 구조 보강하기 253
16.1 플러그인 엔진의 새로운 시나리오 253
16.2 플러그인 엔진의 추가 함수 254
16.3 zip 플러그인 엔진 개발하기 254
16.3.1 format 함수 255
16.3.2 arclist 함수 256
16.3.3 unarc 함수 257
16.3.4 zip 플러그인 엔진 마무리하기 259
16.4 zip 플러그인 엔진 테스트하기 260
16.5 정리 262
16.6 참고 자료 262
17장. 백신 커널 보강하기 262
17.1 파일 정보 클래스 262
17.1.1 파일 정보 클래스에 들어갈 내용 263
17.2 파일 정보 클래스를 이용한 악성코드 검사 시나리오 268
17.3 압축 파일 내부의 악성코드 검사를 위한 백신 프로그램 수정 280
17.4 정리 284
17.5 참고 자료 284
18장. 압축 파일 내부의 악성코드 치료 방법 고민하기 285
18.1 재압축을 위한 플러그인 엔진 추가 함수 285
18.2 압축 파일 내부의 악성코드를 치료하는 시나리오 286
18.3 플러그인 엔진 개발하기 292
18.3.1 mkarc 함수 292
18.4 백신 커널 수정하기 293
18.4.1 scan 함수의 수정 293
18.4.2 scan 콜백 함수 297
18.4.3 악성코드 치료 298
18.4.4 disinfect 콜백 함수 300
18.4.5 update_info의 처리 301
18.4.6 update 콜백 함수 304
18.5 실행 결과 305
18.6 정리 309
18.7 참고 자료 309
5부. 파일 포맷 추가하기 310
19장. 스크립트 파일 포맷 추가하기 311
19.1 HTML 파일 311
19.1.1 정규표현식 311
19.1.2 텍스트 파일 확인 방법 314
19.1.3 HTML 파일 여부 315
19.1.4 HTML 파일은 압축 파일인가? 318
19.1.5 HTML 파일 내부의 스크립트 추출하기 318
19.2 스크립트 엔진 322
19.2.1 스크립트 파일인지 확인하기 323
19.2.2 스크립트 파일 내부의 스크립트 추출하기 326
19.3 소소한 백신 커널 수정하기 328
19.3.1 사용자 입장에서의 압축 해제 엔진 정의하기 328
19.3.2 백신 커널 수정하기 330
19.4 플러그인 엔진 빌드하기 334
19.5 정리 335
19.6 참고 자료 335
20장. PE 파일 포맷 추가하기 337
20.1 PE 파일 337
20.1.1 PE 파일이란? 337
20.1.2 PE 파일의 구조 337
20.1.3 PE 파일의 주요 정보 339
20.1.4 PE 파일의 메모리 맵핑 관계 341
20.1.5 Entry Point 계산 방법 (RVA to Offset) 342
20.1.6 pe 플러그인 엔진 345
20.2 첨부 파일 350
20.2.1 첨부 파일이란? 350
20.2.2 첨부 파일의 위치 및 크기 계산 350
20.2.3 attach 플러그인 엔진 352
20.3 플러그인 엔진 빌드 및 실행 결과 354
20.4 정리 355
20.5 참고 자료 355
21장. OLE 파일 포맷 추가하기 356
21.1 OLE 파일 356
21.1.1 OLE 파일이란? 356
21.1.2 olefile 파이썬 외부 모듈 358
21.2 매크로 360
21.2.1 MS 오피스의 매크로 기능 360
21.2.2 oletools 파이썬 외부 모듈 362
21.3 ole 플러그인 엔진 364
21.4 정리 370
21.5 참고 자료 370
22장. PDF 파일 포맷 추가하기 371
22.1 PDF 파일 371
22.1.1 PDF 파일의 구조 371
22.1.2 Stream을 가진 Object 추출을 위한 정규표현식 372
22.2 pdf 플러그인 엔진 375
22.3 정리 382
22.4 참고 자료 382
23장. ALZ 파일 포맷 추가하기 383
23.1 ALZ 파일 383
23.1.1 ALZ 파일 구조 383
23.1.2 AlzFile 클래스 385
23.1.3 AlzFile 클래스의 내부 멤버 함수 389
23.2 alz 플러그인 엔진 392
23.3 정리 396
23.4 참고 자료 396
24장. UPX 파일 포맷 추가하기 397
24.1 UPX 실행 압축 397
24.1.1 실행 압축 프로그램이란? 397
24.1.2 실행 압축 해제 방법 398
24.2 정리 402
24.3 참고 자료 402
6부. 악성코드 진단/치료하기 404
25장. 스크립트 악성코드 진단/치료하기 404
25.1 주석문 404
25.1.1 주석문의 종류 405
25.1.2 주석문의 제거 406
25.1.3 공백 문자 제거 408
25.1.4 영어 대/소문자 통일 409
25.2 악성코드 패턴 생성기 409
25.2.1 백신 프로그램의 --sigtool 옵션 409
25.2.2 악성코드 검사 대상의 정형화 작업 (normfile.py) 415
25.2.3 악성코드 패턴 DB 최종 생성기 (sigtool_md5.py) 419
25.3 악성코드 패턴 파일을 이용한 악성코드 검사 424
25.3.1 PatternMD5 클래스 (초기화하기) 425
25.3.2 PatternMD5 클래스 (특정 유형에 크기가 등록되었는지 체크하기) 427
25.3.3 PatternMD5 클래스 (MD5 해시 찾기) 428
25.3.4 PatternMD5 클래스 (악성코드 패턴 로딩하기) 429
25.3.5 PatternMD5 클래스 (메모리 관리하기) 431
25.4 PatternMD5 클래스 (메모리 관리하기) 435
25.5 정리 439
25.6 참고 자료 439
26장. 윈도우 악성코드 진단/치료하기 441
26.1 윈도우 악성코드 패턴 441
26.1.1 ClamWin 441
26.1.2 윈도우 악성코드 패턴 생성 444
26.2 emalware 플러그인 엔진 450
26.2.1 emalware 플러그인 엔진 개발 450
26.2.2 emalware 악성코드 패턴 생성 453
26.3 최신 악성코드 패턴 숫자와 백신 엔진 업데이트 날짜 454
26.3.1 최신 악성코드 패턴 숫자 (진단/치료 가능한 악성코드 수) 454
26.3.2 최신 백신 업데이트 날짜 458
26.4 정리 460
26.5 참고 자료 461
27장. MS 오피스 악성코드 진단/치료하기 462
27.1 매크로 바이러스 462
27.1.1 매크로 소스코드 추출 462
27.1.2 매크로 주석문 및 공백 문자 제거 464
27.2 macro 플러그인 엔진 467
27.3 변종 악성코드 검사하기 472
27.3.1 변종 악성코드의 등장 472
27.3.2 아호 코라식(Aho–Corasick) 검사 474
27.3.3 아호 코라식 알고리즘을 이용한 변종 악성코드 검사 485
27.4 정리 488
27.5 참고 자료 488
28장. 한글 (HWP) 취약점 진단/치료하기 489
28.1 한글 파일 포맷 489
28.1.1 한글 파일 포맷 문서 489
28.1.2 한글 취약점 점검 도구 : HwpScan2 490
28.1.3 HWP 5.0 파일 포맷의 주요 구조 490
28.2 hwp 플러그인 엔진 495
28.2.1 백신 커널의 수정 (압축 내부 정보 추가 제공) 495
28.2.2 hwp 플러그인 엔진 : scan 함수 496
28.2.3 hwp 플러그인 엔진 : getinfo 함수 499
28.3 정리 501
28.4 참고 자료 502
7부. 백신 프로그램 배포하기 503
29장. 설치 파일 만들기 504
29.1 PyInstaller 504
29.1.1 배포본 만들기 504
29.1.2 배포본 테스트하기 505
29.2 NSIS 507
29.2.1 NSIS, HM NIS Edit 다운로드 및 설치하기 508
29.2.2 백신 설치 프로그램 만들기 509
29.3 정리 512
29.4 참고 자료 513
30장. 백신 프로그램 업데이트하기 514
30.1 백신 업데이트 서버 514
30.1.1 백신 업데이트 서버에 최신 백신 프로그램 업로드하기 514
30.1.2 update.cfg 파일 생성하기 515
30.2 백신 프로그램 수정 517
30.2.1 업데이트 옵션 추가 517
30.3 백신 프로그램 업데이트 테스트 523
30.4 정리 524
30.5 참고 자료 525
에필로그 526
찾아보기 527
서비스 설명
Python 2.x 백신을 Python 3.x 백신으로...
악성코드는 1986년부터 생겨나기 시작하여 벌써 30년 넘게 사용자의 컴퓨팅 환경을 위협해왔습니다.그로 인해 타인의 정보를 수집, 국가 간 사이버 공격용 무기로 발전하는 등 수많은 피해가 발생했습니다.
이에 필자는 악성코드를 치료하는 백신이 어떻게 동작하는지 그리고 어떻게 개발하면 되는지를 기록으로 남기기 위해 1998년에 사라졌던 키콤백신을 오픈소스로 재탄생시켜야겠다는 생각을 가지고 2013년에 다시 처음부터 개발하게 되었습니다.
키콤백신은 사용자에게 백신의 원리를 쉽게 이해시키기 위해 파이썬(Python) 언어를 선택했습니다. 이 책에서는 소스코드에 존재하지만 주석만으로 설명되지 않는 부분들을 가급적 자세하고 상세히 설명하려고 노력했습니다.
해당 전자책을 통해 백신의 동작원리를 이해하면 자신만의 프로그래밍 언어로 바꾸는 것도 가능하고 키콤백신의 소스코드를 확장하여 나만의 백신을 개발할 수도 있습니다.
파일 형식
직무스킬 분야
전문가 정보
총 작업개수
4건만족도
-회원구분
개인회원현재 보안회사 ㈜누리랩 설립자 겸 CEO로서 악성코드 분석 및 백신(Anti-Virus) 제작 업무를 맡고 있으며, 디지털 포렌식 관련 수사 도구 개발 및 연구에도 참여하고 있다. 다수의 공공기관 및 대학교를 대상으로 악성코드 분석 및 백신 개발, 디지털 포렌식 강의를 하고 있습니다. 1993년 악성코드 분석을 계기로 1995년 키콤백신을 개발하여 PC 통신망에 공개하면서 본격적으로 악성코드 분석 및 백신 개발에 심취하게 되었습니다.
취소 및 환불 규정
가. 전자책은 전자상거래법에 따른 시험 사용 상품(미리 보기)이 제공되며, 구매 즉시 제공되는 디지털콘텐츠이므로 단순 변심으로 인한 취소·환불이 불가합니다. 나. 단, 전자상거래법에 따른 청약철회 제한 사유에 해당하지 않는 경우는 예외로 합니다. 다. 전자책 외 전문가의 컨설팅 등 유·무형의 서비스가 추가로 제공되는 경우, 해당 범위에 대한 취소 환불은 다음의 기준을 따릅니다. - 추가 서비스 제공 전 취소·환불 가능 - 추가 서비스가 제공된 후에는 원칙적으로 취소·환불 불가(단, 구매 확정 전 전문가와 의뢰인이 취소 합의한 경우는 예외)
상품정보고시
제작자 또는 공급자 | KeiChoi | 이용조건, 이용기간 | 상품 상세 참조 |
최소 시스템 사양, 필수 소프트웨어 | 상품 상세 참조 | 청약철회 또는 계약해지의 효과 | 상품 상세 참조 |
이용조건 | 상품 상세 참조 | 소비자상담전화 | 결제 전 상담 제공 |
리뷰
아직 작성된 리뷰가 없어요.