시스템 공격

보안/신기술공격 유형시스템 공격
읽는데 17분 소요
처음 쓰여진 날: 2026-04-24
마지막 수정일: 2026-04-25
조회수:

요약

호스트에 접근한 뒤 수행하는 시스템(로컬) 공격을 정리합니다. 레이스 컨디션과 심볼릭 링크 악용, 권한 상승, 백도어, 루트킷, 키로거까지 정보처리기사 실기 대비용으로 한 지면에 살펴봅니다.

공격 계열 한눈에 보기 쌩기초

정보보호 시험의 "공격 유형" 문제를 풀 때는 먼저 어느 계열인가부터 판별합니다. 크게 7개 계열로 구분합니다.

계열공격 대상·특징대표 공격관련 페이지
네트워크 공격트래픽·프로토콜 조작스니핑, IP/ARP 스푸핑, 세션 하이재킹, 패스워드 크래킹네트워크 공격
서비스 거부 공격가용성 파괴SYN 플러딩, Smurf, LAND, Teardrop, Ping of DeathDoS 공격, DDoS
사회공학 공격사람의 심리피싱, 파밍, 스미싱, 워터링 홀, Business SCAM사회공학 공격
악성 코드실행 가능한 악성 프로그램바이러스, 웜, 트로이 목마, 랜섬웨어, 스파이웨어악성 코드
시스템(호스트) 공격호스트·프로세스·파일시스템레이스 컨디션, 심볼릭 링크, 권한 상승, 백도어, 루트킷본 페이지
소프트웨어 보안 취약점프로그래밍 결함버퍼 오버플로, 포맷 스트링, 정수 오버플로, 경로 조작소프트웨어 개발 보안 취약점
웹 애플리케이션 공격웹 요청·세션SQL Injection, XSS, CSRF, 파일 업로드, 디렉터리 트래버설웹 애플리케이션 공격

시스템 공격이란? 쌩기초

시스템 공격(System Attack) 또는 호스트 공격(Host Attack) 은 공격자가 표적 호스트에 접근 권한을 얻은 뒤, 운영체제·파일시스템·프로세스 수준에서 수행하는 공격을 말합니다. 주된 목적은 다음과 같습니다.

  • 권한 상승: 일반 사용자 → 관리자(root/Administrator)
  • 지속성 확보: 재부팅·패치 후에도 접근 유지 (백도어·루트킷)
  • 정보 탈취: 키 입력·저장 자격증명 수집 (키로거)
  • 흔적 은폐: 로그 삭제·프로세스 은폐

다음 섹션부터는 정보처리기사 실기에 자주 등장하는 시스템 공격을 하나씩 살펴봅니다.


레이스 컨디션 기초

레이스 컨디션(Race Condition) 은 둘 이상의 프로세스·스레드가 공유 자원에 동시에 접근할 때, 접근 순서(타이밍)에 따라 결과가 달라지는 상황을 악용하는 공격입니다. 정상 프로그램이 자원을 검사(check) 한 시점과 사용(use) 하는 시점 사이의 짧은 시간 틈(race window) 을 공격자가 비집고 들어가 자원을 바꿔치기 합니다.

이 공격 패턴을 TOCTOU(Time-Of-Check to Time-Of-Use) 레이스 컨디션 이라고 부릅니다.

TOCTOU 공격의 전형적 흐름

  1. 정상 프로그램이 /tmp/work 파일의 존재·소유자를 검사 (check)
  2. 검사 결과 "안전"으로 판단, 파일을 열어 쓰기 준비
  3. 이 순간 공격자가 끼어들어 /tmp/work를 삭제하고 같은 이름의 심볼릭 링크를 /etc/passwd로 생성
  4. 정상 프로그램이 원래 열려던 /tmp/work쓰기 실행 (use) → 실제로는 /etc/passwd에 쓰기 발생

프로그램이 root 권한(setuid1)을 가지고 있다면, 이 한 번의 틈으로 공격자는 시스템 파일을 임의로 변조할 수 있습니다.

3컷 만화로 표현한 TOCTOU 레이스 컨디션 공격 흐름
검사한 순간과 사용하는 순간 사이, 그 짧은 틈에 표지판이 바뀐다

심볼릭 링크 기초

심볼릭 링크(Symbolic Link, Soft Link)다른 파일·디렉터리의 경로를 가리키는 작은 파일입니다. 원본 경로가 삭제되면 링크는 깨지지만(dangling), 다른 파일시스템·다른 디렉터리로 자유롭게 가리킬 수 있다는 유연함 덕분에 공격자가 TOCTOU 공격에서 즐겨 사용합니다.

레이스 컨디션 공격에서 공격자는 임시 파일이 있는 자리에 공격 대상 파일 경로(예: /etc/passwd)를 가리키는 심볼릭 링크를 생성해, 프로그램이 의도치 않은 파일에 접근하도록 유도합니다.

링크 4종 비교표 쌩기초

정보처리기사 실기에서 "심볼릭 링크"의 오답 보기로 자주 등장하는 4종을 구분합니다.

용어정의특징
심볼릭 링크 (Symbolic Link / Soft Link)다른 파일·디렉터리의 경로를 가리키는 작은 파일파일시스템을 넘나들 수 있음. 원본 삭제 시 깨짐. TOCTOU 공격의 단골 도구
하드 링크 (Hard Link)동일한 inode(파일 실체)를 가리키는 또 다른 이름같은 파일시스템 안에서만 가능. 디렉터리 불가. 원본을 지워도 다른 링크가 있으면 데이터 유지
하이퍼 링크 (Hyper Link)HTML <a href>웹 문서 간 링크파일시스템 개념 아님. 공격 기법과 무관한 함정 보기
링크 로트 (Link Rot)시간이 지나며 링크 대상이 사라져 깨진 링크가 되는 현상공격이 아닌 자연적 열화 현상. 함정 보기

권한 상승 기초

권한 상승(Privilege Escalation) 은 낮은 권한을 가진 사용자·프로세스가 더 높은 권한을 얻는 공격입니다. 레이스 컨디션·버퍼 오버플로·커널 취약점 등이 수단이 됩니다.

유형설명
수직적 권한 상승 (Vertical)일반 사용자 → 관리자(root) 권한 획득
수평적 권한 상승 (Horizontal)사용자 A의 데이터를 사용자 B가 접근

대표 수단:

  • setuid 프로그램 악용: root 권한으로 실행되는 setuid 프로그램에서 취약점을 찾아 root 쉘 획득
  • 커널 취약점: 커널의 메모리 관리·시스템 콜 버그를 이용해 커널 모드 진입
  • SUDO 설정 오류: sudoers 파일에서 특정 명령을 비밀번호 없이 실행할 수 있게 허용된 경우
  • 미패치 취약점: 공개된 권한 상승 익스플로잇을 그대로 사용

대응책: 최소권한 원칙, 커널·애플리케이션 최신 패치, SUDO 설정 정기 점검, setuid 비트가 붙은 프로그램 목록 감사.

좌우로 비교한 수직적·수평적 권한 상승
위로 올라가면 수직, 옆으로 넘어가면 수평

백도어 기초

백도어(Backdoor) 는 "뒷문"이라는 뜻 그대로, 정상 인증을 우회해 시스템에 접근할 수 있도록 공격자가 심어 둔 은밀한 통로입니다.

  • 원리: 시스템에 비밀 계정·비밀 포트·트리거 명령을 심어, 공격자만 아는 방법으로 바로 관리자 쉘로 진입
  • 형태:
    • 하드코딩된 마스터 비밀번호: 정상 인증 로직 외에, 개발자만 아는 별도 암호로도 통과되도록 소스에 심어 둔 경우 (예: Juniper ScreenOS 백도어 사건2)
    • 리버스 셸(Reverse Shell): 일반적인 셸은 공격자가 피해자에게 접속하지만, 리버스 셸은 피해자 쪽에 심어진 코드가 공격자 서버로 먼저 접속합니다. 회사 방화벽은 보통 "외부→내부" 들어오는 연결은 차단해도 "내부→외부" 나가는 연결은 허용하므로, 방향을 뒤집어 방화벽을 통과합니다.
    • 커널 백도어: 운영체제의 핵심 코드인 커널 자체에 침투한 백도어입니다. ps·netstat·ls 같은 사용자 도구는 정보를 얻을 때 결국 커널에 물어보는데, 그 커널이 이미 거짓말을 하도록 변조돼 있어 어떤 보안 도구로도 백도어 존재를 탐지하기 매우 어렵습니다.
  • 대응: 정기적인 무결성 검사(Tripwire·AIDE3), 코드 리뷰, 네트워크 이상 트래픽 탐지
정문은 경비가 지키지만 뒷문으로 몰래 드나드는 공격자
정문 인증을 통과하지 않고 뒷문으로 들어가는 비밀 통로

루트킷 기초

루트킷(Rootkit)공격자가 root 권한을 지속적으로 유지하면서 자신의 존재를 감추기 위한 도구 묶음입니다. 이름이 "root + kit"인 이유입니다.

루트킷은 어느 계층에서 동작하느냐에 따라 유저 모드와 커널 모드로 나뉩니다. CPU는 권한 수준을 가장 깊은 Ring 0(커널)부터 가장 얕은 Ring 3(사용자)까지 단계로 구분하는데4, 더 깊은 Ring에서 움직일수록 위·아래 모두를 속일 수 있어 탐지가 어렵습니다.

유저 모드 루트킷 기초

응용 계층(Ring 3)에서 표준 명령어·라이브러리를 변조해 공격자의 흔적을 가립니다.

응용 계층(Ring 3) 에서 동작합니다. 커널은 그대로 두고 사용자 영역의 명령어·라이브러리만 변조해서 공격자의 흔적을 가립니다.

  • 바이너리 교체: ps·ls·netstat·ifconfig·who 같은 표준 명령을 트로이 목마 버전으로 바꿔치기. 변조된 ps는 공격자의 프로세스만 출력에서 빼고 나머지는 그대로 보여 줍니다.
  • 공유 라이브러리 후킹: 리눅스의 LD_PRELOAD5, 윈도우의 DLL 인젝션을 통해 readdir()·open() 같은 표준 라이브러리 함수 호출을 가로채 결과를 위조
  • 장점(공격자 입장): 만들기 쉽고, 일반 사용자 권한만으로도 일부 동작이 가능
  • 약점: 정상 바이너리·라이브러리와 해시값을 비교하면 변조가 곧바로 드러남. 외부에서 가져온 깨끗한 도구(예: 정적 컴파일된 busybox)로 점검하면 본모습이 노출됨

대표 예: t0rn, LRK(Linux Rootkit Kit) 시리즈 — 90년대 후반 유닉스 서버 침해의 단골이었습니다.

커널 모드 루트킷 기초

커널 계층(Ring 0)에 직접 침투해 운영체제 자체가 거짓말을 하도록 만듭니다.

커널 계층(Ring 0) 에서 동작합니다. 커널은 모든 프로세스·파일·네트워크를 관리하는 운영체제의 심장이기 때문에, 이 계층이 거짓말을 하면 그 위의 모든 도구가 속습니다.

  • 시스템 콜 후킹: 리눅스의 LKM(Loadable Kernel Module)6 형태로 커널에 모듈을 끼워 넣고 시스템 콜 테이블(sys_call_table)의 함수 주소를 변조. getdents()(파일 목록 조회) 자체가 공격자 파일을 빼고 반환하므로 ls를 변조할 필요조차 없습니다.
  • SSDT 후킹: 윈도우 커널의 시스템 서비스 디스패치 테이블(SSDT)을 변조해 NtQuerySystemInformation 같은 커널 API의 결과를 조작
  • DKOM(Direct Kernel Object Manipulation): 커널이 관리하는 프로세스 연결 리스트에서 공격자 프로세스의 노드를 통째로 끊어 버려, 커널 자체가 그 프로세스의 존재를 인식하지 못하게 만듦
  • 진화형: 부팅 단계의 부트로더·UEFI 펌웨어까지 감염시키는 부트킷(Bootkit)·UEFI 루트킷도 같은 계열. 디스크를 포맷해도 살아남습니다.

대표 예: Sony BMG XCP(2005년 음악 CD에 무단 설치되어 윈도우 커널을 변조한 사건), Stuxnet(이란 우라늄 농축 시설을 노린 산업 사이버 무기에 포함된 커널 모듈).

  • 공통 특징: 일단 심어지면 정상 도구로는 존재를 확인하기 어려움
  • 공통 대응: 부트타임 무결성 검사, Secure Boot7, 커널 서명 검증(서명되지 않은 모듈의 적재 차단), 오프라인 포렌식(디스크를 분리해 깨끗한 시스템에서 분석). 의심될 때는 완전 포맷 후 재설치가 가장 확실
ps·ls·netstat 출력은 정상으로 보이지만 모니터 뒤에 투명 망토를 쓴 root 공격자가 숨어 있는 모습
ps·ls·netstat 결과를 변조해 자기 존재를 가리는 도구 묶음

루트킷은 악성 코드의 한 분류이기도 합니다. 바이러스·웜·트로이 목마와 함께 악성 코드 페이지에서 함께 다룹니다.


키로거 기초

키로거(Keylogger) 는 사용자의 키보드 입력을 몰래 기록하는 악성 프로그램 또는 하드웨어입니다. 입력된 비밀번호·카드번호·개인 메시지가 모두 노출됩니다.

유형
소프트웨어 키로거OS의 키 입력 후킹 API 사용. 브라우저 확장·악성 앱 형태
하드웨어 키로거PC와 키보드 사이에 끼우는 USB 어댑터 형태 장치

대응책: 가상 키보드(온라인 뱅킹 등), 2단계 인증(OTP)으로 비밀번호 유출 시에도 접속 차단, 수상한 USB 장치 점검.


공통 대응책 심화

시스템 공격에 공통으로 적용되는 방어 원칙입니다.

  • 최소권한 원칙(Principle of Least Privilege): 프로그램·사용자에게 꼭 필요한 최소 권한만 부여
  • 메모리 보호 기법: DEP(Data Execution Prevention), ASLR(Address Space Layout Randomization), Stack Canary — 버퍼 오버플로·권한 상승 익스플로잇의 성공 확률 감소
  • 무결성 모니터링: 주요 시스템 파일(/etc/passwd·/etc/shadow·/bin)의 변경 탐지 (Tripwire, AIDE)
  • 로그 감시: 관리자 계정 로그인, setuid 프로그램 실행 등 이상 행위를 SIEM으로 집중 분석
  • 정기 패치: 커널·애플리케이션을 항상 최신으로 유지해 공개 취약점 차단
  • EDR/HIDS: 호스트 기반 침입 탐지 솔루션으로 파일·프로세스 행위 모니터링

관련 기출문제


Footnotes

  1. setuid(Set User ID): 리눅스/유닉스에서 실행 파일에 붙이는 특수 권한 비트입니다. 일반 사용자가 setuid 비트가 붙은 프로그램을 실행하면, 실행되는 동안에는 그 파일의 소유자 권한으로 동작합니다. 소유자가 root이면 실행 중에는 root 권한을 갖게 되어, passwd(비밀번호 변경)처럼 일반 사용자가 root 영역(/etc/shadow)을 건드려야 하는 작업을 가능하게 만들기 위해 사용됩니다. 그러나 setuid 프로그램에 취약점이 있으면 일반 사용자가 root 권한을 탈취할 수 있는 통로가 되므로, 권한 상승 공격의 단골 표적입니다.

  2. Juniper ScreenOS 백도어 사건(2015): 네트워크 장비 회사 Juniper Networks의 방화벽·VPN 운영체제 ScreenOS에서, 누구든지 특정 마스터 비밀번호(<<< %s(un='%s') = %u)만 입력하면 관리자 권한으로 SSH·Telnet 로그인이 통과되는 코드가 발견된 사건입니다. 정상 인증 로직과 별개로 심어진 우회 통로였으며, 누가 언제 심었는지가 끝내 명확히 밝혀지지 않아 국가 기관 개입설이 제기됐습니다. 하드코딩된 마스터 비밀번호가 곧바로 백도어로 분류되는 대표 사례입니다.

  3. Tripwire·AIDE: 둘 다 파일 무결성 모니터링(File Integrity Monitoring, FIM) 도구로, 서버의 주요 파일(/etc/passwd, /bin, /usr/sbin 등)에 대해 처음 한 번 해시값(SHA 등)을 떠서 데이터베이스에 저장해 두고, 이후 정기적으로 다시 해시를 계산해 처음 값과 비교합니다. 누군가 시스템 파일을 변조하면 해시가 달라지므로 변경을 즉시 탐지할 수 있습니다. Tripwire는 1992년 등장한 원조 상용/오픈소스 도구이고, AIDE(Advanced Intrusion Detection Environment) 는 Tripwire를 대체하기 위해 만들어진 GPL 오픈소스 대안입니다. 백도어·루트킷이 시스템 파일을 변조하더라도 해시는 속이기 어려워 탐지에 효과적이지만, 베이스라인 DB 자체는 별도 저장소(읽기 전용 매체 등)에 보관해야 공격자가 함께 변조할 수 없습니다.

  4. Ring 0 ~ Ring 3: x86 계열 CPU가 제공하는 보호 링(Protection Ring) 권한 단계입니다. 가장 깊은 Ring 0은 모든 메모리·하드웨어에 직접 접근할 수 있는 커널의 영역이고, 가장 얕은 Ring 3은 일반 응용 프로그램이 동작하는 영역입니다. Ring 3 코드는 시스템 콜을 통해서만 Ring 0의 기능을 빌려 쓸 수 있고, 이 경계 덕분에 사용자 프로그램의 버그가 OS 전체를 망가뜨리지 못합니다. 루트킷은 이 경계를 어디에서 뚫느냐에 따라 유저 모드(Ring 3)와 커널 모드(Ring 0)로 나뉘며, 커널 모드일수록 위·아래 모두를 속일 수 있어 탐지가 극도로 어려워집니다.

  5. LD_PRELOAD: 리눅스/유닉스의 동적 링커(ld.so)에 알려 주는 환경 변수로, 다른 라이브러리보다 먼저 적재할 공유 라이브러리 경로를 지정합니다. 같은 이름의 함수가 있다면 LD_PRELOAD에 지정된 라이브러리 쪽이 우선 호출됩니다. 정상적으로는 디버깅이나 함수 가로채기 도구를 만드는 데 쓰이지만, 공격자가 자신의 악성 라이브러리를 LD_PRELOAD에 올려 두면 모든 프로그램의 open()·readdir() 같은 표준 함수 호출을 가로채 결과를 위조할 수 있어 유저 모드 루트킷의 단골 기법이 됩니다.

  6. LKM(Loadable Kernel Module): 리눅스 커널을 다시 컴파일하지 않고도 실행 중인 커널에 끼워 넣었다 뺐다 할 수 있는 코드 조각입니다. 디바이스 드라이버, 파일시스템, 네트워크 프로토콜 등을 모듈로 만들어 insmod·modprobe 명령으로 적재합니다. 합법적으로 매우 유용한 기능이지만, 공격자가 자신의 모듈을 적재하면 커널의 함수 포인터·시스템 콜 테이블을 직접 손댈 수 있어 커널 모드 루트킷의 표준 통로가 됩니다.

  7. Secure Boot: UEFI 펌웨어가 PC를 켤 때 부트로더·커널·드라이버에 붙은 디지털 서명을 검증하고, 서명이 없거나 신뢰된 키로 서명되지 않았다면 부팅 자체를 중단하는 기능입니다. 부트킷·UEFI 루트킷이 디스크에 박혀 있어도, 변조된 서명 없는 부트 코드는 실행조차 되지 않게 막아 줍니다. Microsoft·주요 리눅스 배포판 모두 자체 키로 부트로더에 서명해 Secure Boot 환경에서도 정상 부팅이 가능하도록 운영합니다.


관련 글

(27개)
제목태그시험
APT 공격 - 지능형 지속 위협
APT
-
사회공학 공격 - 불특정 다수 타겟
사회공학 공격
-
사회공학 공격 - 특정 대상 타겟
표적 공격
-
시스템 공격 | 정처기 감자