옮긴이 머리말 xi
베타리더 후기 xiii
감사의 말 xiv
시작하며 xv
Chapter 1 기본 다지기 1
1.1 용어 및 개념 소개 1
1.2 칼리 둘러보기 3
__1.2.1 터미널 4
__1.2.2 리눅스 파일 시스템 5
1.3 리눅스의 기본 명령 6
__1.3.1 pwd로 사용자의 현재 위치 찾기 6
__1.3.2 whoami로 로그인 점검 7
__1.3.3 리눅스 파일 시스템 탐색 7
__1.3.4 도움말 10
__1.3.5 man을 이용하여 매뉴얼 페이지 참조하기 10
1.4 찾아보기 11
__1.4.1 locate를 이용한 검색 11
__1.4.2 whereis로 바이너리 찾기 12
__1.4.3 which로 PATH 변수에서 바이너리 찾기 12
__1.4.4 find로 더 강력한 검색 수행하기 13
__1.4.5 grep으로 필터링하기 15
1.5 파일 및 디렉터리 수정 16
__1.5.1 파일 생성 16
__1.5.2 디렉터리 생성 18
__1.5.3 파일 복사 18
__1.5.4 파일 이름 바꾸기 18
__1.5.5 파일 삭제 19
__1.5.6 디렉터리 삭제 19
1.6 재미있게 즐겨보자 20
Chapter 2 텍스트 조작 21
2.1 파일 조회 22
__2.1.1 머리 찾기 22
__2.1.2 꼬리 찾기 23
__2.1.3 줄 번호 붙이기 24
2.2 grep으로 텍스트 필터링 25
__2.2.1 해커가 되기 위한 도전: grep, nl, tail, head의 사용 26
__2.2.2 1단계 26
__2.2.3 2단계 26
2.3 sed를 사용한 찾아 바꾸기 27
2.4 more와 less를 통한 파일 조회 28
__2.4.1 more를 통한 출력 제어 28
__2.4.2 less를 통한 출력과 필터링 29
2.5 요약 30
Chapter 3 네트워크 분석 및 관리 32
3.1 ifconfig를 통한 네트워크 분석 32
3.2 iwconfig를 통한 무선 네트워크 장치 점검 34
3.3 네트워크 정보 변경 35
__3.3.1 IP 주소 변경 35
__3.3.2 네트워크 마스크와 브로드캐스트 주소 변경 35
__3.3.3 MAC 주소 속이기 36
__3.3.4 DHCP 서버에서 새 IP 주소 할당 36
3.4 도메인 네임 시스템 조작 37
__3.4.1 dig를 통한 DNS 확인 37
__3.4.2 DNS 서버 변경 39
__3.4.3 고유의 IP 주소 매핑 40
3.5 요약 42
Chapter 4 소프트웨어 추가 및 제거 43
4.1 소프트웨어 관리를 위한 apt 사용 44
__4.1.1 패키지 검색 44
__4.1.2 소프트웨어 추가 45
__4.1.3 소프트웨어 제거 45
__4.1.4 패키지 업데이트 47
__4.1.5 패키지 업그레이드 47
4.2 sources.list 파일에 저장소 추가하기 48
4.3 GUI 기반 설치 프로그램 사용 50
4.4 git으로 소프트웨어 설치하기 52
4.5 요약 53
Chapter 5 파일 및 디렉터리 권한 관리 54
5.1 서로 다른 사용자 타입 55
5.2 권한 승인 55
__5.2.1 개별 사용자에게 소유권 승인 55
__5.2.2 그룹에 소유권 승인 56
5.3 권한 점검 56
5.4 권한 변경 58
__5.4.1 수 표현으로 권한 변경 58
__5.4.2 UGO를 통한 권한 변경 60
__5.4.3 새 도구에 루트 실행 권한 부여 62
5.5 마스크를 통한 더 안전한 기본 권한 설정 63
5.6 특수 권한 64
__5.6.1 SUID를 이용한 임시 루트 권한 승인 64
__5.6.2 SGID를 이용한 루트 사용자의 그룹 권한 승인 64
__5.6.3 노후된 스티키 비트 65
__5.6.4 특수 권한, 권한 상승 그리고 해커 65
5.7 요약 67
Chapter 6 프로세스 관리 68
6.1 프로세스 확인 69
__6.1.1 프로세스 이름으로 필터링하기 70
__6.1.2 top으로 가장 탐욕스러운 프로세스 찾기 71
6.2 프로세스 관리 72
__6.2.1 nice로 프로세스 우선순위 변경 72
__6.2.2 프로세스 종료 75
__6.2.3 백그라운드에서 프로세스 실행 76
__6.2.4 포그라운드로 프로세스 이동 77
6.3 프로세스 예약 실행 77
6.4 요약 79
Chapter 7 사용자 환경 변수 관리 80
7.1 환경 변수 조회 및 수정 81
__7.1.1 모든 환경 변수 조회 82
__7.1.2 특정 변수 필터링 82
__7.1.3 한 세션을 위한 변숫값 변경 83
__7.1.4 영구적인 변숫값 변경 83
7.2 셸 프롬프트 변경 84
7.3 PATH 변경 86
__7.3.1 PATH 변수에 추가 86
__7.3.2 PATH 변수 치환 주의 87
7.4 사용자 정의 변수 생성 88
7.5 요약 89
Chapter 8 배시 스크립트 작성 90
8.1 배시 단기 집중 강좌 91
8.2 첫 번째 스크립트: “Hello, Hackers-Arise!” 91
__8.2.1 실행 권한 설정 92
__8.2.2 HelloHackersArise 실행 93
__8.2.3 변수 및 사용자 입력을 이용한 기능 추가 94
8.3 해커의 첫 스크립트: 열린 포트 검색 95
__8.3.1 우리의 임무 96
__8.3.2 간단한 스캐너 97
__8.3.3 MySQL 스캐너 개선 98
8.4 일반적인 기본 제공 배시 명령 101
8.5 요약 102
Chapter 9 압축 및 아카이브 103
9.1 압축이란? 103
9.2 타르로 파일 모으기 104
9.3 파일 압축 106
__9.3.1 gzip 압축 107
__9.3.2 bzip2 압축 108
__9.3.3 compress 압축 108
9.4 스토리지 장치의 비트 단위 또는 물리적 복사본 생성 109
9.5 요약 110
Chapter 10 파일 시스템 및 저장 장치 관리 111
10.1 장치 디렉터리 /dev 112
__10.1.1 리눅스가 저장 장치를 나타내는 방법 113
__10.1.2 드라이브 파티션 114
__10.1.3 문자 및 블록 장치 115
__10.1.4 lsblk를 사용하여 블록 장치 및 정보 나열 116
10.2 마운트 및 마운트 해제 117
__10.2.1 저장 장치 직접 마운트하기 117
__10.2.2 umount로 마운트 해제 118
10.3 파일 시스템 모니터링 118
__10.3.1 마운트된 디스크에 대한 정보 얻기 118
__10.3.2 오류 확인 119
10.4 요약 120
Chapter 11 로깅 시스템 121
11.1 rsyslog 로깅 데몬 122
__11.1.1 rsyslog 환경설정 파일 122
__11.1.2 rsyslog 로깅 규칙 124
11.2 logrotate를 통한 로그 자동 정리 126
11.3 은신 상태 유지 128
__11.3.1 흔적 삭제 129
__11.3.2 로깅 비활성화 130
11.4 요약 131
Chapter 12 서비스의 사용 및 악용 132
12.1 서비스의 시작, 중지, 재시작 132
12.2 아파치 웹 서버를 이용한 HTTP 웹 서버 생성 133
__12.2.1 아파치 구동 134
__12.2.2 index.html 파일 수정 135
__12.2.3 HTML 추가 136
__12.2.4 결과 확인 136
12.3 OpenSSH와 라즈베리 스파이 파이 137
__12.3.1 라즈베리 파이 설정 137
__12.3.2 카메라 설정 139
__12.3.3 감시 시작 140
12.4 MySQL/MariaDB에서 정보 추출 141
__12.4.1 MySQL 또는 MariaDB 구동 142
__12.4.2 SQL을 통한 상호작용 143
__12.4.3 비밀번호 설정 143
__12.4.4 원격 데이터베이스 접근 145
__12.4.5 데이터베이스 접속 146
__12.4.6 데이터베이스 테이블 147
__12.4.7 데이터 확인 148
__12.4.8 PostgreSQL과 메타스플로이트 148
12.5 요약 151
Chapter 13 보안과 익명성 152
13.1 인터넷이 우리를 드러내는 방법 153
13.2 어니언 라우터 시스템 154
__13.2.1 토르 작동 방식 154
__13.2.2 보안 고려사항 156
13.3 프록시 서버 156
__13.3.1 환경설정 파일에 프록시 설정 157
__13.3.2 더 흥미로운 옵션 160
__13.3.3 보안 고려사항 162
13.4 가상 사설 네트워크 163
13.5 암호화된 이메일 164
13.6 요약 165
Chapter 14 무선 네트워크 이해와 검사 167
14.1 와이파이 네트워크 167
__14.1.1 기본 무선 명령 168
__14.1.2 aircrack-ng를 이용한 와이파이 정찰 172
14.2 블루투스 감지 및 연결 175
__14.2.1 블루투스 작동 방식 175
__14.2.2 블루투스 스캐닝 및 정찰 176
14.3 요약 180
Chapter 15 리눅스 커널 및 로드 가능한 커널 모듈 관리 181
15.1 커널 모듈이란? 182
15.2 커널 버전 점검 183
15.3 sysctl을 통한 커널 튜닝 183
15.4 커널 모듈 관리 186
__15.4.1 modinfo를 통한 더 많은 정보 수집 187
__15.4.2 modprobe를 통한 모듈의 추가 및 제거 188
__15.4.3 커널 모듈의 삽입 및 제거 188
15.5 요약 189
Chapter 16 잡 스케줄링을 통한 태스크 자동화 190
16.1 자동 기반 이벤트 또는 잡 스케줄링 191
__16.1.1 백업 태스크 스케줄링 193
__16.1.2 MySQLscanner 스케줄링을 위한 crontab 사용 195
__16.1.3 crontab 단축어 196
16.2 부팅 시 잡 실행을 위한 rc 스크립트 사용 197
__16.2.1 리눅스 런레벨 197
__16.2.2 rc.d에 서비스 추가 197
16.3 GUI를 이용한 시작 서비스 추가 198
16.4 요약 199
Chapter 17 해커를 위한 파이썬 스크립트 기초 201
17.1 파이썬 모듈 추가 202
__17.1.1 pip 사용 203
__17.1.2 서드 파티 모듈 설치 204
17.2 파이썬으로 스크립트 시작하기 205
__17.2.1 변수 206
__17.2.2 주석 209
__17.2.3 함수 209
17.3 리스트 210
17.4 모듈 211
17.5 객체 지향 프로그래밍 212
17.6 파이썬에서 네트워크 통신 213
__17.6.1 TCP 클라이언트 제작 213
__17.6.2 TCP 리스너 제작 215
17.7 딕셔너리, 반복, 제어 구문 217
__17.7.1 딕셔너리 217
__17.7.2 제어 구문 217
__17.7.3 반복문 219
17.8 해킹 스크립트 발전시키기 220
17.9 예외 및 비밀번호 크래커 221
17.10 요약 224
찾아보기 226