정보보안기사 실기 “암기장” 최종 정리

정보보안기사 실기 “암기장” 최종 정리

— 시스템/네트워크/애플리케이션/침해사고 분석까지, 숫자·명령어·메커니즘 전부 한 번에 잡는 포스팅

[서론]
정보보안기사 실기는요, “개념을 아는 것”만으로는 부족해요.
시험장에서는 결국 숫자(권한/포트/이벤트ID), 명령어(find/nmap/last/snort 룰), 메커니즘(왜 그렇게 되는지)를 동시에 요구해요.

그래서 이 글은 외우기 좋은 문장과 바로 써먹는 명령어, 그리고 시험에 바로 나오는 포인트만 쭉 적었습니다.

목표는 단 하나예요.
지하철에서 중얼거리면 그대로 답이 나오는 상태.


[본론] SECTION 1. 시스템 보안 – 숫자 싸움의 끝판왕

1) 리눅스 계정 파일 구조: /etc/passwd vs /etc/shadow

✅ /etc/passwd (기본: 644, “누구나 읽기”)

  • 역할: 계정의 “뼈대 정보”가 들어 있어요.
  • 구조(시험용 포맷):
    ID : x : UID : GID : 설명 : 홈디렉터리 : 로그인쉘

암기 포인트

  • 두 번째 필드의 x = “비밀번호는 여기 없고 /etc/shadow에 있다”
  • UID=0이면 root (시험 단골)

“passwd는 신상정보, shadow는 비밀번호 금고”라고 비유했요.


✅ /etc/shadow (시험 포인트: root만 읽기 / “보안 핵심”)

  • 역할: 비밀번호 해시가 있는 진짜 금고
  • 구조(시험용):
    ID : $해시ID$솔트$암호문 : ...

해시ID 암기(진짜 자주 나와요)

  • $1$ = MD5
  • $5$ = SHA-256
  • $6$ = SHA-512

Salt(솔트) 왜 넣나요?

  • 레인보우 테이블(미리 계산된 해시 표) 공격을 막기 위해
  • “랜덤값 섞어서 해시 생성” → 같은 비밀번호라도 해시가 달라짐

실무에서는 /etc/shadow 권한이 400만 있는 경우도 있고(강경 세팅), 640처럼 그룹 shadow를 쓰는 배포판도 있어요.
시험에서는 “root만 읽는 파일”로 잡고 가는 게 안전해요.


2) 특수 권한 3종 세트: SetUID / SetGID / Sticky Bit

여기부터는 기호(s,t) ↔ 숫자(4000,2000,1000) 매칭 싸움이에요.

✅ SetUID (4000, s)

  • 의미: 실행 시 파일 소유자 권한(root 등)으로 실행
  • 위험 포인트: /usr/bin/passwd 같은 파일
    → 공격자가 악용하면 권한 상승 가능

SetUID 찾기(시험 단골 명령)

find / -perm -4000
find / -perm -4000

✅ SetGID (2000, s)

  • 의미: 실행 시 그룹 권한으로 실행
  • (시험에서는 SetUID보다 비중은 조금 낮지만, 숫자/기호는 꼭 외워야 해요)

✅ Sticky Bit (1000, t) – /tmp의 “공용인데 삭제는 제한”

  • 공용 디렉터리에 설정됨(대표 /tmp)
  • 규칙: 누구나 생성 가능, 삭제는 소유자와 root만 가능
  • 표기: drwxrwxrwt (맨 끝 t 확인)

“/tmp는 공용 주차장, 차는 누구나 대지만(생성) 남의 차는 못 빼요(삭제)”
이렇게 이미지로 외워봐요.


3) umask 계산: “최대 권한 – umask = 기본 권한”

  • 파일 최대: 666 (실행권한 없음)
  • 디렉터리 최대: 777

예: umask 022일 때 파일 권한

  • 666 - 022 = 644 (rw-r--r--)

여기서 실수 포인트: “파일도 777에서 빼는” 실수 정말 많이해요.
파일은 666부터 시작입니다.


[본론] SECTION 1-2. 로그 파일 완전 해부 – 무조건 출제 파트

1) 리눅스 로그 5대장 (기본 경로: /var/log)

로그내용확인 명령포인트
utmp현재 로그인 사용자w, who, finger바이너리
wtmp로그인/로그아웃/부팅 이력last바이너리, 히스토리
btmp로그인 실패 기록lastbBrute Force 탐지 핵심
lastlog계정별 마지막 접속lastlog/var/log/lastlog
secure인증(PAM), sudo, 계정cat, viRHEL 계열 핵심

Debian/Ubuntu는 secure 대신 auth.log가 더 흔해요.
시험에서는 “RHEL=secure”로 잡는 게 맞습니다.


2) Syslog 설정 포맷 + 중요도 레벨 순서(암기 필수)

✅ 설정 형식

서비스(Facility).중요도(Priority) 로그위치(Action)

✅ 중요도(높음 → 낮음)

  • emerg
  • alert
  • crit
  • err
  • warning
  • notice
  • info
  • debug

암기 리듬: E-A-C-E-W-N-I-D
(이거는 진짜로 소리 내서 외우면 시험장에서 자동으로 나옵니다.)


3) 로그 로테이션: logrotate

  • 로그가 꽉 차서 장애 나는 걸 막기 위해
  • 압축/삭제/순환을 자동으로 관리
  • 설정: /etc/logrotate.conf

[본론] SECTION 1-3. 시스템 공격 & 방어 – 메커니즘이 답이다

1) 메모리 공격

✅ 버퍼 오버플로우

  • 입력 검증 없이 넘치게 넣음 → Return Address 변조
  • 대응 3종 세트:
    • ASLR: 주소 랜덤 배치
    • Stack Guard/Canary: 복귀주소 앞 검증값
    • 안전 함수: strcpy → strncpy, strcat → strncat

✅ 포맷 스트링 공격

  • printf(buf)처럼 포맷 지정자 없이 출력하면
  • %x, %n 등으로 메모리 열람/변조 가능

2) Race Condition & 심볼릭 링크 공격(/tmp 단골)

  • /tmp 같은 공용 공간에서
  • 관리자 권한 프로그램이 임시 파일 만들 때
  • 공격자가 미리 같은 이름의 심볼릭 링크를 /etc/passwd 같은 중요 파일로 걸어두면…
    → “내가 만든 임시 파일”이 사실 “중요 파일 덮어쓰기”로 바뀔 수 있어요.

대응

  • umask 강화
  • 임시 파일명 랜덤 생성: mkstemp

3) 패스워드 크래킹 3종

  • Dictionary: 사전 단어 대입
  • Brute Force: 전수조사(느림)
  • Rainbow Table: 해시를 미리 계산해둔 거대한 표

대응은 한 줄로 끝

  • Salt 추가 (레인보우 테이블 무력화)

[본론] SECTION 1-4. 필수 보안 설정 & 데몬

1) PAM (Pluggable Authentication Modules)

  • 인증 모듈 프레임워크
  • 프로그램 재컴파일 없이 /etc/pam.d/ 수정으로 정책 변경

4가지 타입(시험 서술형 단골)

  • auth : 사용자 신원 확인
  • account : 계정 유효성/시간/정책
  • password : 비밀번호 변경/설정
  • session : 로그인 전/후 환경

로그인 실패 제한(계정 잠금)

  • pam_tally.so (시험 포인트)

2) TCP Wrapper

  • inetd 슈퍼데몬 계열 서비스 접근 제어
  • 검사 순서:
    1. hosts.allow
    2. hosts.deny

중요 룰(시험 답안용 문장)

  • Allow에 있으면 통과
  • 없으면 Deny 확인
  • 둘 다 없으면 통과(Default Allow)
  • 보안성 확보하려면 Deny에 ALL:ALL 기본 차단을 둔다


[본론] SECTION 2. 네트워크 보안 – 포트/플래그/옵션의 전쟁

1) DoS: “자원 고갈의 미학”

✅ TCP SYN Flood

  • SYN만 대량 → 서버는 SYN+ACK 후 ACK 기다림
  • Backlog Queue가 꽉 차서 정상 연결 불가

대응 키워드

  • Syncookies
  • First SYN Drop
  • 커널 설정:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syncookies = 1

✅ Smurf

  • Src IP를 피해자로 스푸핑 + 브로드캐스트에 ICMP Echo Request
  • 수많은 호스트가 피해자에게 Reply 폭탄

대응(시험 한 줄 답안)

  • 라우터에서 Directed Broadcast 차단
no ip directed-broadcast
no ip directed-broadcast

✅ Land

  • Src IP = Dst IP (자기 자신) → 무한 루프 유발
  • 대응: 방화벽에서 Source==Destination 차단

✅ Teardrop / Bonk / Boink

  • Fragment Offset 중첩/조작 → 재조립 오류
  • 대응: OS 패치 + 조각화 패킷 검사

2) DDoS 구성요소(그림으로 외우기)

공격자 → 마스터(C&C) → 에이전트(좀비) → 타겟

고전 도구(시험 고정픽)

  • Trinoo: UDP Flood
  • TFN: UDP/TCP SYN/ICMP
  • Stacheldraht: TFN + 암호화

3) Spoofing & Sniffing

✅ ARP Spoofing(MITM)

  • 공격자가 “내가 GW야” ARP Reply 지속 전송 → ARP Cache Poisoning

대응

arp -s IP MAC
arp -s IP MAC

✅ DNS Spoofing(파밍)

  • DNS 응답을 정상보다 빠르게 위조 응답
  • 대응: 중요 사이트는 hosts에 고정(시험 포인트)

[본론] SECTION 2-2. 무선랜 보안 – 알고리즘 매칭이 점수다

1) 암호화 방식 진화(시험 표로 그대로)

구분알고리즘포인트
WEPRC4 + IV(24bit)IV 짧아서 키 복구 취약
WPA(v1)TKIP(RC4 기반)WEP 보완, 키 갱신
WPA2AES-CCMP표준/정답 1순위
WPA3SAEPSK 사전대입 보완, OWE

2) 무선랜 공격

  • War Driving: 이동하며 취약 AP 탐색
  • Rogue AP: 불법 AP, 내부망 침투 통로

[본론] SECTION 2-3. VPN & IPSec – AH/ESP 구분이 킬러

IPSec(3계층 보안)

✅ AH vs ESP

  • AH: 무결성/인증/재전송 방지 (암호화 X)
  • ESP: 무결성/인증 + 기밀성(암호화)

✅ Transport vs Tunnel

  • Transport: IP 헤더 유지, Payload 보호(종단간)
  • Tunnel: 패킷 전체 보호 + 새 IP 헤더(게이트웨이간 VPN)

✅ 키 교환(IKE)

  • UDP 500번

SSL/TLS VPN

  • 브라우저 기반(4~7계층), 클라이언트 설치 부담이 낮음

[본론] SECTION 2-4. 포트 스캐닝 & IDS/IPS – nmap 옵션은 실기 단골

1) 스캔 기법(논리로 외우기)

  • TCP Connect: 3-way handshake 완료(로그 남음)
  • SYN Half-open: SYN → SYN/ACK 받으면 RST로 끊음
  • FIN/NULL/Xmas: 닫힌 포트는 RST, 열린 포트는 무응답(RFC 규약 악용)

Xmas = FIN + PSH + URG (“전구 다 켠다”)

2) IDS vs IPS

  • IDS: 탐지
  • IPS: 탐지 + 차단
  • 오탐(False Positive) vs 미탐(False Negative) 구분(미탐이 더 위험)

3) Snort 룰(시험장에서 그대로 쓰는 구조)

  • 헤더: [Action] [Proto] [Src IP] [Src Port] -> [Dst IP] [Dst Port]
  • 옵션(룰 바디): msg, content, sid 등

예시:

alert tcp any any -> 192.168.1.0/24 80 (msg:"Web Attack"; content:"GET"; sid:1001;)
alert tcp any any -> 192.168.1.0/24 80 (msg:"Web Attack"; content:"GET"; sid:1001;)


[본론] SECTION 3. 애플리케이션 보안 – “코드/로그로 판별” 수준까지

1) SQL Injection(심화)

✅ Error-Based

  • 에러 메시지로 정보 노출
  • 패턴: ' 입력, HAVING 1=1 등

✅ Union-Based

  • UNION으로 결과 합치기
  • 조건: 컬럼 수 & 데이터 타입 일치

예:

' UNION SELECT 1, user(), 3, 4 --
' UNION SELECT 1, user(), 3, 4 --

✅ Blind SQLi

  • 에러 안 보이면 “질문”으로 뽑아냄

Boolean-Based

  • 참/거짓에 따라 페이지 내용 변화
  • substring/ascii/length 활용

Time-Based

  • 참이면 응답 지연
  • MSSQL: WAITFOR DELAY '0:0:5'
  • MySQL: SLEEP(5)

✅ Mass SQLi

  • 대량 변조(UPDATE/SET/REPLACE 등장)

방어(서술형 정답 1순위)

  • Prepared Statement(가장 확실)
  • 입력값 검증(정규식/치환)
  • 에러 메시지 차단(디버깅 정보 숨김)

2) XSS vs CSRF vs SSRF(삼대장)

✅ XSS: 실행은 “피해자 브라우저”

  • Reflected / Stored / DOM
  • 대응:
    • HTML Entity 변환(< → &lt;)
    • 출력 시 write() 주의
    • 쿠키 보호: HttpOnly

✅ CSRF: 요청은 “사용자 권한으로”

  • 대응:
    • CSRF Token
    • 중요 기능 재인증

✅ SSRF: 요청은 “서버가 내부망을 찌르게”

  • 대응:
    • 내부망 대역 차단
    • 요청 URL 검증

3) FTP Active vs Passive(포트가 점수)

✅ Active

  • 명령: 클라(1024+) → 서버 21
  • 데이터: 서버 20 → 클라(1024+)
  • 문제: 클라 방화벽이 서버 20 접속을 막으면 실패

✅ Passive

  • 명령: 클라(1024+) → 서버 21
  • 데이터: 클라(1024+) → 서버(1024+ 랜덤)
  • 문제: 서버 측 랜덤 포트 개방 부담

보안 설정: ftpusers에 root 등록(접속 차단)


4) E-mail 보안(포트 고정)

  • SMTP 25(발송)
  • POP3 110(수신/삭제)
  • IMAP 143(수신/서버보관)
  • Relay Deny(스팸 릴레이 차단)

SPF / DKIM / DMARC: 서술형 키워드


5) Apache/IIS 실무 설정(시험 답안용)

  • 디렉터리 리스팅 제거: Options -Indexes
  • 위험 메서드 제한: PUT/DELETE/TRACE
  • 서버 정보 숨김: ServerTokens Prod
  • 커스텀 에러 페이지


[본론] SECTION 4. 침해사고 분석 & 대응 – “로그/룰/증거수집”이 배점이다

1) Snort 룰(실기에서 문법 틀리면 0점 느낌)

옵션 핵심:

  • msg, content, nocase
  • offset, depth
  • sid(사용자 정의는 1,000,001부터)
  • rev
  • 바이너리: | 00 FF A1 |
  • 정규식: pcre:"/regex/"

예시(FTP root 접속 탐지):

alert tcp any any -> 10.10.10.0/24 21 (msg:"FTP Root Login"; content:"USER root"; nocase; sid:1000001; rev:1;)
alert tcp any any -> 10.10.10.0/24 21 (msg:"FTP Root Login"; content:"USER root"; nocase; sid:1000001; rev:1;)

2) YARA(악성코드 분류 도구)

구조: rule / meta / strings / condition

  • strings: 텍스트/16진수/정규식
  • condition: $a and $b 같은 논리 조건

3) 리눅스 로그 분석 핵심

  • wtmp: last
  • btmp: lastb (로그인 실패)
  • secure: 인증/PAM/sudo

추가:

  • xferlog: FTP 전송 기록
  • Pacct(프로세스 회계): lastcomm, acctcom

4) 윈도우 이벤트 로그(숫자 암기)

Logon Type

  • 2: 대화형
  • 3: 네트워크
  • 10: RDP

Event ID(Security.evtx)

  • 4624: 로그인 성공
  • 4625: 로그인 실패
  • 4672: 관리자 권한 로그인
  • 1102: 로그 삭제(Audit Log Clear) ← 공격 흔적 삭제 단골

5) 포렌식 핵심 개념

✅ 증거 수집 순서(Order of Volatility, RFC 3227)

  • 레지스터/캐시 → 라우팅/ARP/메모리(RAM) → 임시파일 → 디스크 → 원격로그/매체

✅ Slack Space

  • RAM Slack / Drive Slack / File system slack
  • 범인이 데이터 숨기기 좋은 영역

6) 패킷 분석 단골 시그니처(와이어샥 눈)

  • Land: Src IP == Dst IP
  • Smurf: Src IP=피해자, Dst=Broadcast(ICMP)
  • Ping of Death: 65,535 초과
  • Teardrop: Fragment Offset 중첩
  • RUDY: 느린 HTTP POST(Content-Length 크게, 데이터 천천히)

[중간 점검] “시험장 답안”으로 바로 쓰는 한 줄 정리

  • /etc/passwd는 계정 정보, /etc/shadow는 해시 금고(솔트/해시ID 포함)예요.
  • 특수 권한: SetUID=4000(s), SetGID=2000(s), Sticky=1000(t)예요.
  • 로그 5대장: utmp/wtmp/btmp/lastlog/secure, 확인 명령도 세트로 외워요.
  • SYN Flood 대응: syncookies + 커널 설정, Smurf 대응: directed broadcast 차단이에요.
  • WPA2=AES-CCMP, IPSec에서 AH는 암호화 X, ESP는 암호화 O예요.
  • SQLi는 Error/Union/Blind(Boolean/Time)로 쪼개고 방어는 Prepared Statement가 1순위예요.
  • 윈도우 로그 삭제는 1102, 로그인 성공/실패는 4624/4625예요.

[결론] 3줄 요약

  1. 실기는 “개념”보다 숫자/명령어/메커니즘이 점수를 결정해요.
  2. 오늘 정리는 시험 단골을 세트(파일↔권한↔명령, 공격↔대응, 로그↔확인)로 묶어 암기하게 설계했어요.
  3. 지금부터는 “읽는 공부”가 아니라 퀴즈로 말로 뱉는 공부(Active Recall)로 넘어가면 합격권이에요.

💡 독한 퀴즈 (진짜로 말로 답해보세요)

오늘은 한 문제만 풀고 가요. (답은 댓글처럼 당신이 먼저 말해보는 게 핵심이에요)

Q. 리눅스에서 “로그인 실패(Bad Login)” 기록을 저장하는 파일명과, 확인 명령어는 무엇인가요?