Level 0 — 컴퓨터 조작과 구조의 이해
-
Step 1. 파워쉘 첫걸음 — 글자로 컴퓨터 조종하기
지금 당신이 컴퓨터를 다루는 방법은 이렇습니다. 폴더 아이콘을 더블클릭하고, 파일을 드래그하고, 버튼을 누릅니다. 이걸 GUI(그래픽 사용자 인터페이스)라고 부릅니다. 그런데 이 책이 가르칠 세계 — 서버 관리, 해킹, 보안 분석 — 에서는 GUI가…
-
Step 2. 파일 다루기 — 만들고, 복사하고, 옮기고, 지우기
파일 복사는 마우스로도 됩니다. 그런데 "이 폴더에서 .txt 파일만 300개 골라 복사해 줘"는 마우스로는 300번 클릭, 명령으로는 한 줄입니다. "매일 밤 로그를 백업 폴더로 옮겨 줘"는 자동화해야 하고, 원격 서버에는 아예 마…
-
Step 3. 파이프(|) — 명령을 조립하는 사고방식
오늘은 개념적으로 가장 중요한 날 중 하나입니다. 명령 하나하나는 도구일 뿐이고, 파이프는 그 도구들을 "조립"하는 방법입니다. 보안 조사의 대부분은 "이상하게 오래 도는 프로세스만 골라 줘", "수만 줄 로그에서 실패한 로…
-
Step 4. 텍스트 처리 — 로그에서 바늘 찾기
오늘의 주인공은 "로그"입니다. 컴퓨터 세계의 모든 것은 기록을 남깁니다 — 로그인 성공/실패, 프로그램 오류, 접속 기록. 그리고 그 기록은 전부 텍스트 파일입니다. 사고 조사는 "ERROR가 든 줄만 보여 줘" 한 줄로 시작해서,…
-
Step 5. 시스템 정보 수집 — 내 컴퓨터의 건강검진표
해커가 서버 침투에 성공하면 영화처럼 바로 자료를 빼돌리지 않습니다. 대부분 정찰(enumeration)부터 합니다 — 이 컴퓨터는 뭐 하는 곳인지, 지금 뭐가 돌고 있는지, 디스크에 여유가 있는지. 즉 공격자의 첫 스킬이 "시스템 정보 수집"입니다.…
-
Step 6. 네트워크 확인 — 내 컴퓨터의 대외 연락망 점검
오늘은 보안의 본무대, 네트워크의 첫날입니다. 휴대폰 요금 명세서에서 모르는 번호와의 통화 기록을 발견하면 "누구지?" 하겠죠. 컴퓨터도 똑같습니다 — 당신이 모르는 사이에 수많은 외부 주소와 대화를 나누고, 악성코드가 본거지와 몰래 통신하는 것도 이…
-
Step 7. 변수와 자료형 — 이름표 붙은 상자에 담기
오늘부터 "프로그래밍"이 시작됩니다. 하지만 겁먹지 마세요. 오늘 배우는 것은 "값에 이름을 붙여 두고 나중에 다시 꺼내 쓰는" 것 — 일상에서 메모하는 행위와 본질이 같습니다. 오늘의 챕터는 전부 손으로 따라 쳐야 합니다. 코드를…
-
Step 8. 조건문과 반복문 — 컴퓨터에게 판단과 노가다를 시키기
오늘이야말로 "스크립트다운 스크립트"의 첫날입니다. Step 4에서 로그 파일을 다뤘는데, 실제 서버의 로그는 하루에 수만 줄씩 쌓입니다. 보안 담당자에게 필요한 것은 "실패 로그인이 5건 넘으면 알려 줘"(조건 판단)와 "…
-
Step 9. 실행 정책과 첫 스크립트 — 윈도우의 안전장치와 정면으로 만나기
2000년, "ILOVEYOU"라는 이메일이 전 세계를 강타했습니다. 제목만 보면 연애편지 같았지만, 첨부 파일은 스크립트였고, 클릭하는 순간 컴퓨터의 파일을 감염시키고 주소록의 모든 사람에게 자기 자신을 퍼뜨렸습니다. 교훈은 단순합니다: 스크립트는 …
-
Step 10. ★ 프로젝트: 파일 자동 분류 — 다운로드 폴더를 청소하는 로봇
여러분의 다운로드 폴더는 지금 어떤 모습입니까? 설치 파일, 사진, PDF, 압축 파일이 뒤섞여서, 필요한 걸 찾으려면 스크롤을 오르내리는… 대부분의 컴퓨터에서 다운로드 폴더는 "디지털 창고"가 됩니다. 오늘 만들 것은 스크립트 한 번 실행하면…
-
Step 11. 레지스트리 탐구 — 윈도우의 금고 열어보기
컴퓨터 포렌식 드라마에는 이런 대사가 나옵니다. "이 프로그램, 부팅할 때마다 자동 실행되도록 등록되어 있어." 조사관은 그걸 어디서 본 걸까요? 바로 레지스트리(registry) — 윈도우의 모든 설정이 모인 데이터베이스입니다. 그리고 악성코드가 &…
-
Step 12. 이벤트 로그 — 윈도우의 블랙박스 읽기
비행기 사고가 나면 조사관이 제일 먼저 찾는 것이 블랙박스입니다. 윈도우에도 블랙박스가 있습니다 — 이벤트 로그(event log). 로그인, 로그인 실패, 프로그램 실행, 시스템 시작… 윈도우에서 벌어지는 사건이 시간 순으로 기록되는 곳입니다. 침해 사고…
-
Step 13. 프로세스와 서비스 내부 — 실행의 계보를 추적하라
작업 관리자를 열었는데 모르는 프로그램이 돌고 있다고 합시다. 보안 분석가의 첫 질문은 정해져 있습니다: "얘를 누가 실행했지?" 아무것도 아닌 프로그램도, 실행시킨 주체가 수상하면 수상한 겁니다. 프로세스의 세계에는 가족관계가 있습니다 — 모든 프로…
-
Step 14. 원격 관리 — 네트워크 너머의 컴퓨터에 명령하기
회사 침해 사고 조사에서 흔한 반전이 있습니다. 피해 서버의 로그를 보면, 악성 행위를 한 세션이 네트워크 너머 다른 컴퓨터에서 접속한 것으로 기록되어 있습니다. 침입자는 그 서버 앞에 앉은 적이 없는 겁니다. 어떻게?…
-
Step 15. ★ 프로젝트: 부팅 후 무슨 일이? — 자동 실행 지점 총조사
컴퓨터 전원을 누르고 화면이 뜰 때까지의 몇 분 사이, 컴퓨터 안에서는 수십 개의 프로그램이 자동으로 출근합니다. 백신, 클라우드 동기화, 사운드 드라이버… 전부 "부팅 시 자동 실행" 명단에 등록된 것들입니다. 그런데 이 명단에…
-
Step 16. 가상화 이해 — 컴퓨터 안에 컴퓨터를 짓는다
폭죽 실험을 거실에서 하면 안 되는 이유는 명확합니다. 집이 타니까요. 해킹 연습도 같습니다. 취약한 시스템을 일부러 만들고, 공격하고, 망가뜨리는 일을 여러분의 실제 컴퓨터에서 할 수는 없습니다. 필요한 것은 안에서 무슨 짓을 해도…
-
Step 17. 우분투 설치와 스냅샷 — 실험실 입주와 세이브 포인트
RPG 게임에서 보스 앞에서는 세이브를 합니다. 지면 세이브 포인트로 돌아와 다시 도전하죠. 오늘 배울 스냅샷(snapshot)은 가상머신의 세이브 포인트입니다. 그리고 그 실험실에 입주할 운영체제로 우분투(Ubuntu)를 선택했습니다 — 가장 사용자가 많고 자료가 넘…
-
Step 18. 리눅스 기본 명령어 1 — 검은 창에서 길 찾기
영화 속 해커들이 검은 창만 두드리는 이유를 아시나요? 과시가 아닙니다. 진짜 서버에는 그림 화면(바탕 화면)이 없는 경우가 대부분이기 때문입니다. 보안 실무자가 만나는 리눅스 — 공격 대상 서버, 분석 도구 상자, 클라우드 인스턴스…
-
Step 19. 리눅스 기본 명령어 2 — 출력을 조종하는 세 개의 수도관
공장의 기계들을 생각해 보세요. 각 기계에는 물이 들어오는 관과 나가는 관이 있습니다. 배관공이 나가는 관을 뽑아 하수구 대신 다른 기계의 입구에 꽂으면, 두 기계가 연결된 생산라인이 됩니다. 리눅스의 명령들이 바로 이 기계들입니다.…
-
Step 20. 검색 (grep/find) — 건초더미에서 바늘 두 개 찾기
수사관이 사건 현장에서 던지는 질문은 두 종류입니다: "이름이 ○○인 사람을 찾아라"(신원으로 찾기)와 "이런 말을 한 사람을 찾아라"(내용으로 찾기). 파일 시스템도 같습니다. 오늘의 두 주인공 — grep은 내용으로, find는 …
-
Step 21. 패키지 관리 — 리눅스의 앱스토어, apt
윈도우에서 프로그램을 설치하는 방식을 떠올려 보세요. 검색 → 사이트 찾기 → 다운로드 → 설치 파일 실행 → 다음 다음 다음. 그리고 Step 16에서 배운 위험, 가짜 사이트와 재포장 설치 파일이 따라다닙니다. 리눅스는…
-
Step 22. 에디터 — nano와 vim, 터미널에서 살아남기
지금까지 우리는 명령어로 파일을 "보기"만 했습니다. cat으로 읽고, grep으로 찾고, find로 검색했지요. 그런데 실제 현장에서는 파일을 "고쳐야" 하는 순간이 훨씬 많습니다. 설정 파일의 값을 바꾸고, 스크립트를 작성하고, …
-
Step 23. 권한 1 — rwx, 파일에 새겨진 규칙
집에 현관문이 있듯이, 리눅스의 모든 파일과 폴더에는 "문"이 달려 있습니다. 그리고 각 문에는 "누가 열 수 있는가"가 적혀 있습니다. 이것이 리눅스의 권한(permission) 시스템입니다. ls -l을 칠 때마다 봤던 -rwxr…
-
Step 24. 권한 2 — 소유권과 sudo, 힘을 다스리는 법
지난 챕터에서 우리는 "누가 무엇을 해도 되는가"를 배웠습니다. 그런데 질문이 하나 남습니다. 그 규칙 위에 있는 존재는 없을까? 모든 파일을 읽고, 모든 설정을 바꾸고, 모든 사용자를 지울 수 있는 존재 말입니다.
-
Step 25. 사용자 관리 실험 — 인증과 인가의 경계를 넘어 보라
지금까지 우리는 계정 하나로만 살았습니다. 그런데 리눅스는 태생이 "여러 사람이 함께 쓰는 컴퓨터"입니다. 한 대의 서버에 수십 명이 각자 계정으로 로그인하고, 각자의 홈 폴더에서 일하고, 남의 파일은 못 보게 막혀 있습니다. Step…
-
Step 26. 프로세스 관리 — 보고, 찾고, 신호를 보내라
지금 이 순간에도 여러분의 우분투 안에서는 수십 개의 프로그램이 동시에 돌고 있습니다. 네트워크를 관리하는 것, 로그를 기록하는 것, 여러분의 터미널을 띄운 것 — 전부 각각이 살아 있는 실행 단위, 프로세스(process)입니다. 서버가 이상할…
-
Step 27. 디렉토리 구조 탐구 — 리눅스 지도를 손에 넣다
윈도우를 오래 쓴 사람은 폴더 구조가 제멋대로라고 느끼곤 합니다. 프로그램은 Program Files에도 AppData에도 있고, 설정은 레지스트리에도 ini 파일에도 있죠. 리눅스는 다릅니다. 수십 년 된 표준 배치표가 있어서 "설정은 여기, 로그는 여기, …
-
Step 28. bash 스크립트와 cron — 손으로 치던 명령을 자명종에 맡겨라
지금까지 우리는 명령을 한 줄씩 손으로 쳤습니다. 그런데 매일 아침 "디스크 확인하고, 메모리 확인하고, 로그 백업하고"를 손으로 친다면 사흘이면 지칠 겁니다. 컴퓨터는 원래 반복을 대신하라고 만든 기계입니다. 명령어들을 파일에 적어 두고 통째로…
-
Step 29. SSH 원격 접속 — 암호화된 대문을 열다
여기까지 여러분은 가상머신 창을 띄워 놓고 그 안에서 직접 작업했습니다. 그런데 실제 서버는 대부분 멀리 떨어진 데이터센터나 클라우드에 있고, 화면도 키보드도 없습니다. 그 컴퓨터에 명령을 내리는 사실상 유일한 표준이 SSH(Secure Shell)입니다. 오늘은…
-
Step 30. ★ 프로젝트: 모니터링 자동화 — 혼자 일하는 감시자 만들기
기술을 하나씩 배울 때와 실제로 무언가를 만들 때의 차이는, 개별 악기 연습과 합주의 차이와 같습니다. 여러분은 ls, grep, 권한, 스크립트, cron이라는 악기를 하나씩 다뤄 봤습니다. 오늘은 합주입니다. 만들 것은 "혼자 일하는 감시자"…
-
Step 31. IP 주소 완전 이해 — 동네 이름과 집 번호
Step 29에서 우리는 ip a로 주소를 찾아 SSH로 접속했습니다. 그때는 "192.168로 시작하는 숫자"가 그저 집 주소였습니다. 오늘은 그 주소의 구조를 뜯어봅니다. 왜 하필 192.168로 시작할까? 끝에 붙은 /24는 뭘까? 같은 동네와 …
-
Step 32. MAC 주소와 ARP — 전선 위의 진짜 주소
지난 챕터에서 우리는 주소(IP)를 배웠습니다. 그런데 이상한 점이 있습니다. 내 노트북이 같은 동네의 프린터에 데이터를 보낼 때, 그 데이터는 전선(또는 전파)을 타고 갑니다. 전선 위의 데이터 덩어리는 정말 "172.30.1.54에게"라고 적혀서 …
-
Step 33. DNS — 인터넷의 전화번호부
여러분은 매일 naver.com, google.com을 칩니다. 그런데 지난 두 챕터에서 배웠듯, 컴퓨터끼리의 통신은 숫자(IP)로 이루어집니다. "google.com"이라는 글자는 통신에 못 씁니다. 그렇다면 누가 이 이름을 숫자로 바꿔 줄까요?
-
Step 34. 포트와 서비스 — 건물 안의 호수
지난 챕터들에서 우리는 주소(IP)를 배웠습니다. 그런데 질문이 하나 남습니다. 한 대의 서버가 웹 서비스도 하고, 원격 접속도 받고, 메일도 주고받는다면 — 들어온 편지를 어느 부서에 전달할까요? 컴퓨터는 이 문제를 번호 하나 더로…
-
Step 35. TCP 심화 — 악수의 기술
전화를 걸 때를 생각해 보세요. 수화기를 들자마자 용건부터 말하는 사람은 없습니다. "여보세요?" — "네, 여보세요." — "아, 안녕하세요." 이 짧은 인사가 지나야 대화가 시작됩니다. 그리고 끝날 때도 &quo…
-
Step 36. UDP와 ICMP — 던지는 배달부와 상태 신고 전화
지난 챕터의 TCP는 정중한 배달부였습니다. 악수하고, 확인하고, 순서를 맞추고. 그런데 세상에는 그런 예절이 사치인 상황도 있습니다. 영상 통화에서 0.1초짜리 목소리 조각이 하나 빠졌다고, 그 조각을 다시 주문해 0.5초 뒤에 받는 것 —…
-
Step 37. 라우팅과 게이트웨이 — 편지의 여정을 따라가라
집에서 택배를 하나 부친다고 생각해 봅시다. 목적지가 같은 동네면 동네 우체국 하나로 끝나지만, 목적지가 부산이면 택배는 집 앞 우체국 → 시내 물류센터 → 부산 물류센터를 거쳐 갑니다. 이 "거쳐 가는 물류센터들"이 오늘의…
-
Step 38. NAT와 공유기 — 변장 담당 문지방의 비밀
수수께끼가 두 개 있습니다. 첫째, Step 37에서 여러분의 컴퓨터는 192.168.x.x나 172.30.x.x 같은 주소를 갖고 있었는데, 옆집 컴퓨터도 똑같은 주소일 수 있습니다. 주소가 겹치는데 우편배달은 왜 안 꼬일까요? 둘째, 지구의 인터넷 주소(IPv4)는…
-
Step 39. OSI 7계층 — 아홉 조각을 올리는 지도
지금까지 우리는 네트워크의 조각들을 하나씩 배웠습니다. IP는 주소, MAC은 이웃 배달, DNS는 전화번호부, 포트는 호수, TCP는 정중한 전화, UDP는 던지는 배달, ICMP는 상태 신고, 라우터는 이정표, NAT는 변장. 아홉 개의 조각입니다. 그런데…
-
Step 40. Level 0 종합 테스트 — 스스로에게 시험을 보다
운전 학원을 떠올려 봅시다. 기능 시험 전날, 강사는 새 기술을 가르치지 않습니다. "지금까지 배운 것을 혼자 힘으로 할 수 있는지" 확인합니다. 오늘이 바로 그날입니다. 지난 39개의 스텝에서 여러분은 파워쉘을 처음 연 날부터,…