BYOD(Bring Your Own Device) 보안기술

  • 컨테이너화 : 데이터와 어플리케이션 분리
  • MDM(Moblie Device Management) : 모바일 기기 원격 관리, 모니터링
  • MAM(Mobile Application Management) : 어플리케이션 통제, 관리
  • 모바일가상화 : 하나의 모바일 기기에서 여러 운영체제(환경) 사용
  • ❌ NAC은 관련없음

DNS Cache Table 조회법 :ipconfig /displaydns

* DNS Cache Table : 최근 조회한 도메인 이름과 해당 IP 주소를 임시로 저장해두는 테이블

umask(user file-creation mode mask)

새 파일이나 디렉터리를 만들 때 기본 권한에서 빼는 값(마스크)

  • r : 읽기 권한 (read)
  • w : 쓰기 권한 (write)
  • x : 실행 권한 (execute)

기본권한 (r 4 + w 2 + x 1)

숫자3개는 각각 첫번째 자리는 소유자, 두번째 자리는 그룹, 세번째 자리는 기타 사용자 권한을 의미함

  • 파일 : 666(rw-rw-rw-)
  • 디렉터리 : 777(rwxrwxrwx)

umask의 기본설정값(보안상 최소값)은 022

umask 022 라면,
파일 : 666 – 022 = 644(rw-r–r–)
디렉터리 : 777 – 022 = 755(rwxr-xr-x)

디렉터리에서는 x가 디렉터리 내부로 접근하는 권한이기 때문에, 기본적으로 x 권한이 들어가 있음.

chown : 리눅스 파일 및 디렉터리 소유권 변경

chmod : 파일 및 디렉터리의 권한 변경

chgrp : 파일의 그룹 변경

SetUID : 실행할 때 소유자의 권한으로 실행

  • chmod 4777 파일명 / rwsrwxrwx
  • 백도어 프로그램 필요한 권한 : 4xx5 (root권한 획득 및 사용자 읽기 및 실행(4+1) 필요

setGID : 그룹의 권한으로 실행

  • chmod 2xxx 파일명 / rwxrwsrwx

sticky bit : 디렉터리에서 자기 소유 파일만 삭제 가능

  • chmod 1xxx 파일명 / rwxrwxrwt

디렉터리 drwxr- x—에는 다른 사람이 접속 불가능하다. 사용자에 실행 권한이 필요함

공격툴

루트킷 : 시스템에 접근할 수 있는 루트(Root) 권한을 쉽게 확보할 수 있는 Kit (2)

  • 루트킷의 웹 사이트지는 자신과 다른 소프트웨어를 보이지 않게 숨기고 사용자가 공격자의 소프트웨어를 인지하고 제거할 가능성을 피한다.
  • 윈도우용 루트킷에는 FU-Rootkit, Hxdef100, NTRootkit 등이 있다.
  • 리녹스용 루트킷에는 Suckit, lrk4, lrk5, adore 등이 있다.
  • 자기복제는 불가.

논리폭탄(Logic Bomb) : 특정 조건이 발생하면 실행되는 악성코드

트로이목마 : 정상처럼 보이는 프로그램에 숨겨놓은 악성코드. 백도어, 유틸리티 프로그램으로 위장, 정보 유출이나 자료 파괴. 자기복제 능력 X, 다른 파일 감염 X

스턱스넷(Stuxnet) : 국가 차원에서 개발된 것으로 추정되는, 산업 제어 시스템 PLC(Programmable Logic Controller)를 공격해 실제 설비(지멘스 원심분리기)를 파괴한 최초의 사이버 무기형 악성코드

Code Red(코드레드) : 2001년에 대유행한 인터넷 웜. IIS 웹서버취약점(버퍼 오버플로우) 이용해서 공격 “Hacked by Chinese!”

SQL Slammer(슬래머) : 2003년에 퍼진 초고속 인터넷 웜. Microsoft SQL Server 2000의 버퍼 오버플로우 취약점

metasploit : 보안 취약점 공격(Exploit)과 침투 테스트를 자동화해주는 오픈소스 프레임워크. CVE 코드 부여 취약점 공격

XSSer : Cross-Site Scripting(XSS) 취약점 자동화 공격 툴. XSSer는 안드로이드를 대상으로, XSSer mRAT은 아이폰을 대상으로 함.

Ghidra : 미국 NSA가 공개한 역공학(리버스 엔지니어링) 프레임워크

Subfinder : 서브도메인 검색 툴 (Go 언어 기반, 오픈소스)

암호를 알아내는 공격방법

Rainbow Table : 패스워드 평문과 해시 값을 저장한 일종의 암호표. 이를 활용해 공격함

사전공격(Dictionary Attack) : ID, 패스워드를 크랙하기 위해서 ID와 패스워드가 될 가능성이 있는 단어를 사전파일로 만들어놓고 사전파일의 단어를 대입하여 크랙하는 공격

(사전만들기 예시)
crunch 4 4 1234

Credential Stuffing : 유출된 아이디와 비번을 무작위로 대입하는 공격 방법. 공격자가 확보한 로그인 자격증명을 다른 인증 시스템의 계정에 무작위로 대입해서 사용자의 계정을 탈취.

무작위 공격=무차별 대입 공격(Brute-force Attack) : 특정한 암호를 풀기 위해 가능한 모든 값을 대입

시스템 또는 서비스의 ID, 패스워드에 대해서 도구를 이용하여 ID, 패스워드를 자동 조합하여 크랙하는 공격

Keylogger : 키 입력을 몰래 기록하는 악성코드

크립토로거(Cryptologger) : 일반 키로거는 키보드 입력 그대로 저장하지만, 크립토로거는 암호화까지 적용해서 기록을 보관하거나 전송하는 악성 프로그램.

이블트윈(Evil Twin)

패스워드 혹은 신용카드 정보를 훔치기 위해서 합법적인 네트워크인 것처럼 속이는 무선 네트워크

Warwalking

  • 사람이 걸어 다니며 주변 Wi-Fi 네트워크를 탐지·기록하는 행위 (연구 목적, 취약점 공격 목적 등)
  • Wardriving, Warcycling, Warshipping 등 비슷함

SAM(Security Account Manager)

윈도우 시스템의 사용자 계정 및 패스워드를 암호화(해시) 해서 보관

접근 허용할 그룹 : Administor, System 그룹

“C:\Windows\System32\Config” 디렉터리에 위치하며, SAM파일은 기본적으로 잠겨져 있으나 시스템 계정으로 접근 가능하다는 취약점을 통해 공격자에게 추출당하면 패스워드를 크래킹 당할 수 있다.

HKEY_LOCAL_MACHINE\SAM에는 실제 구체화된 자료-사용자 패스워드, 소속그룹, 도메인 정보, 로컬계정 및 그룹정보-가 있는데 일부는 관리자 계정도 접근 제한(시스템 계정은 전부 접근 가능), 일반계정은 당연히 X

SRM{Security Reference Monitor)

  • 사용자에게 SID(Security Identifier)를 부여한다
  • SID에 기반하여 파일이나 디렉터리에 대한 접근 허용 여부를 결정한다
  • 이에 대한 감사 메시지를 생성한다

LSA(Local Security Authority) : Windows에서 보안 정책과 사용자 인증을 관리하는 구성 요소. 로그인 인증, 권한 검사 등을 수행한다.

LAM (LAN Manager) : Windows의 초기 네트워크 인증 방식. LAN Manager 해시(LM Hash)를 이용한 비밀번호 인증 방식이다.

탐지툴

chkrootkit : rootkit 탐지도구, promiscuous 모드 검사, lastlog / wtmp 삭제여부 검사

Nessus : GUI 형태. 클라이언트서버 기반. 리눅스, 윈도우 등의 보안 취약점 진단 툴

Nikto : CLI 기반 웹 서버 및 웹 응용프로그램 보안진단 툴. 공개용.

COPS : 유닉스 기반 전통적인 보안진단 툴, C언어로 작성, 백도어에 대한 정보도 제공

COPE : 유닉스 기반, 약한 패스워드를 탐지하는 프로그램

SAINT : 네트워크 취약점 분석 도구로서 HTML 형식의 보고서 기능이 있으며 원격으로 취약점을 점검하는 기능

John the ripper : 시스템상 존재하는 패스워드 취약점 사전에 점검

LOphtcrack : Windows의 SAM(계정 암호 해시)을 크래킹(무차별·사전공격)해서 비밀번호를 복구·분석하던 상업용 툴

Pwddump : Windows 시스템에서 SAM 해시를 추출해서 로컬 파일로 덤프하는 유틸/스크립트 계열

(X)WinNuke : 윈도우 운영체제를 대상으로 는 원격 서비스 거부 공격 방법. 청색폭탄(Blue Bomb). 1997년 오래된 프로그램

리눅스

리눅스 시스템의 구성요소

  • 커널
  • : 사용자의 명령어를 읽어서 해석하는 프로그램
  • 파일시스템

lsof(list open files) : 리눅스에서 실행 중인 파일 정보(사용자 등)나 포트 정보 등 보는 프로그램

하드 디스크를 umount 명령을 통해 분리하는 과정에서 “Device is busy’라는 문구 때문에 분리하지 못하고 있는 상황에서 lsof를 통해 프로세스가 어떤 파일을 점유하고 있는지 알 수 있음

Isof -p <PID>

리눅스 패스워드 설정

/etc/pam.d/system-auth

리눅스 /etc/passwd 파일

사용자이름:비번:UID:GID:설명:홈디렉터리:로그인셸(지정된셸)	 
root:x:0:0:root:/root:/bin/bash	 
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin	 
bin:x:2:2:bin:/bin:/usr/sbin/nologin	 
sys:x:3:3:sys:/dev:/usr/sbin/nologin	 
user1:x:1000:1000:해피:/home/user1:/bin/bash
  • 저장되는 필드 중 첫 번째에는 사용자 계정 UlD가 있다. (X)
  • 사용자 계정과 패스워드가 저장되어 있다. (X)
    →사용자 계정은 맞지만 암호는 x로 표시되며, 암호해시는 /etc/shadow에 따로 저장됨
  • 사용자 계정 UID 값이 “0”이면 root이다. (O)
  • 총 5개의 필드로 이루어져 있다. (X) → 7개
  • 최근 로그인 정보 (X)

strings : 바이너리 파일 안에 읽을 수 있는 메시지만 표시. 리눅스 프로그램

리눅스 파일무결성 검사도구 : Tripwire(2), AIDE, Samhain, fcheck 등

nmap : 네트워크 상에 있는 호스트, 포트, 서비스, 운영체제 등 스캔. 리눅스와 윈도우 모두 사용

nmap -sS 192.168.0.10 // SYN 스캔 (스텔스 스캔)
nmap -sT 192.168.0.10 // TCP Connect 스캔
nmap -sU 192.168.0.10 // UDP 스캔
nmap -sV 192.168.0.10 // 서비스 버전 탐지
nmap -O 192.168.0.10 // OS 탐지

JVM : 자바 프로그램을 실행시키는 가상 머신

iptables : 리눅스 방화벽. 패킷 필터링, 포트 차단/허용, NAT 설정 등 네트워크 트래픽 제어

top : CPU, 메모리, 시스템 부하 정보를 실시간 확인

리눅스의 inode 블록관리 방법

  • 단일 간접 블록
  • 이중 간접 블록
  • 삼중 간접 블록
  • 사중 간접 블록(X)

리눅스에서 일정 시간 입력이 없을 때 로그아웃을 하려면, /etc/profile에 TMOUT 변수를 설정

Linux Capabilities

  • root 권한을 여러 개의 작은 권한으로 나누어 관리하는 기능이다.
  • 특정 프로그램에 필요한 권한만 부여할 수 있다.
  • 예: 네트워크 설정, 포트 사용 등의 일부 root 권한만 허용.
  • CAP_CHOWN : 파일의 UID와 GID를 임의적으로 변경
  • CAP_AUDIT_CONTROL : 커널 감시 기능
  • CAP_SYS_MODULE : 커널 모듈 올리거나 내리기
  • CAP_MAC_ADMIN : MAC(강제적 접근권한)을 재정의

find : 파일 검색 명령어

/ : 루트 디렉터리부터 전체 시스템 검색

-user root : 파일 소유자가 root인 파일만 검색

-type f : 일반 파일만 검색, 디렉터리, 링크 등 제외

-perm -06000 : 특정 권한이 설정된 파일 검색

  • 06000 = setuid + setgid
  • 특히 setuid (4000) 가 중요 → 실행 시 파일 소유자(root) 권한으로 실행

\(~\) : 조건 그룹 묶기, find에서 여러 조건을 묶을 때 사용

-exec ls -al {} \; : 검색된 파일에 대해 명령 실행

  • -exec : 명령 실행
  • ls -al : 상세 정보 출력
  • {} : 찾은 파일
  • \; : 명령 종료

PAM(Pluggable Authentication Modules)

  • 리눅스 인증 모듈. (로그인, su, sudo, ssh 등)
  • 모듈 타입
    • auth : 패스워드가 맞는지 확인
    • account : 계정 접근 통제
    • password : 패스워드 갱신
    • session : 인증 전후 수행 사항 정의
    • control(❌)

윈도우 프로그램

MBSA : 최신 윈도우 시스템 버전별 핫픽스의 설치 유무 확인

tasklist : 윈도우에서 실행 중인 프로세스 목록 출력

netstat : 프로세스ID, 프로세스 이름, 라우팅테이블 정보 프로토콜, 로컬주소:포트, 외부주소, 상태 / 데이터 패킷(X)

윈도우 레지스트리

SYSTEM.DAT. USER.DAT 파일

regedit. exe 전용 편집기에 의해서만 편집이 가능

윈도우 레지스트리 편집 도구 : regedit, regedit32, PowerToys

HKEY_CLASS_ROOT, HKEY_CURRENT_USER, HKEY_
LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG 등

악성코드 구동을 위해 사용하는 윈도우 레지스트리
HKEY_CLASSES_ROOT

regedit.exe에서 파일 내보내기로 백업, 가져오기로 복구(shell.exe로 백업X)

레지스트리는 당연히 익명의 사용자가 접근하면 안됨

Shellbags

  • Windows에서 폴더 보기 설정 정보를 저장하는 레지스트리 데이터이다.
  • 사용자가 열어본 폴더 경로, 정렬 방식, 창 크기 등이 기록된다.
  • 폴더가 삭제되어도 기록이 남을 수 있다.

윈도우 net 명령어

net share c$ /delete : 윈도우 공유폴더 삭제

  • net → Windows 네트워크 관리 명령어 실행
  • share → 공유 폴더(공유 자원) 관리
  • c$ → C드라이브의 기본 관리자 공유(숨김 공유, $ 붙으면 숨김)
  • /delete → 해당 공유를 삭제

net user administrator : 사용자 정보 확인(암호 마지막 변경날짜 포함)

윈도우 이벤트로그

  • 이벤트뷰어 프로그램 사용
  • *.evt로 저장, 용량이 정해져 있고 밀어쓰기 형식.(변경 가능)
  • 윈도우로그 종류
    • 응용 프로그램(어플리케이션) 로그
    • 보안 로그 : 로그인 횟수, 로그인 오류 정보 등
    • 시스템 로그
  • 이벤트 로그휘발되면 안 됨.
  • 감사로그는 제어판-관리도구-로컬보안설정-감사정책

Buffer Overflow

  • 프로세스가 사용 가능한 메모리 공간을 초과해서 발생하는 보안 취약점.
  • C와 C++ 등으로 개발할 때, 메모리 공간을 제한하지 않아서 발생함
  • 함수의 복귀 주소에 오버플로우를 발생시켜 공격.
  • Stack 영역은 지역변수에 저장(❌전역변수)
  • 지역변수는 C에서 자동 초기화되지 않음(쓰레기값 처리. 보안을 위해서라면 별도 초기화 필요)
취약한 API안전한 API
strcat()
strcpy()
gets()
scanf()
vscanf()
vsscanf()
sprintf()
vsprintf()
gethostbyname()
strncat()
strncpy()
fgets()
fcanf()
vfscanf()

snprintf()
vsnprintf()

대응방법

  • Stack guad : 감시값 canary 비교
  • Stack Shield : 리턴값 백업
  • ASLR : Address Space Layout Randomization, 리턴 시작 주소 무작위 배치
  • (⭕)NX bit : 스택과 힙 영역 실행 권한 제거
  • (❌) eXecute bit : x(실행) 권한
  • (❌) rtl(return to libc) : 공격법

소프트웨어 보안 약점의 성격 구분

공격수비
경로 조작 및 자원 삽입
위험한 형식 파일 업로드
LDAP 삽입
충분하지 않은 키 길이 사용

* LDAP(Lightweight Directory Access Protocol) : 사용자 정보, 조직구조 등 저장하고 조회하는 프로트콜

Directory indexing : httpd.conf 파일에 indexes 옵션을 제거하지 않아서 브라우저로 디렉터리 목록이 보이는 취약점

▲ 브라우저 주소창에 디렉터리 경로를 입력하면 그대로 보임

Directory Traversal Attacks : 파일 이름을 입력하는응용프로그램에 대해 상위 디렉터리를 의미하는 문자열(/../ 등)을 사용하여 비공개 파일에 액세스

(예) ~/admin/default.php라는 주소의 상위 디렉터리를 보고 싶을 때, “~/admin/default.php/../”를 입력하면 admin의 디렉터리가 보임.

SQL Injection : 공격자가 입력 파라미터 등에 SQL문을 삽입하여 애플리케이션에 임의의 SQL문을 전달하여 실행하는 공격

Blind SQL Injection : 입력값으로 SQL를 조작하지만, 결과가 안 나오므로 간접적인 반응만으로 추측해서 공격

Command Injection

  • 쉘 입력을 통해 운영체제 명령어를 마음대로 실행시킬 수 있는 공격
  • 공격자가 OS의 조작 커멘드를 이용하는 애플리케이션에 대해서 OS의 디렉터리 작성 커맨드를 삽입하여 실행

XPath Injection : 입력값에 XPath 질의를 삽입하여 XML 데이터를 조작하는 공격

패스 더 티켓 공격 (Pass the Ticket) : 공격자가 싱글 사이온(SSO)을 제공하는 디렉터리 서비스에 대해 무단으로 얻은 자격 증명을 사용하여 로그인하고 여러 응용 프로그램을 무단으로 사용하는 공격

리눅스 로그

utmp : 현재 로그인 사용자 정보를 기록한 로그

  • 바이너리 형식으로 저장 (아스키형식 ❌)
  • who : 현재 로그인 사용자 보기 (/var/log/utmp)
  • w : 로그인 사용자 + 실행중 프로세스 보기
ID 계정형식 접속시간 (원격지)
user tty1 2025-05-15 08:32
ubuntu pts/0 2025-05-15 09:02 (192.168.0.101)
admin pts/1 2025-05-15 09:15 (10.0.0.20)

wtmp : 지금까지 로그인과 로그아웃 정보, 서버 Reboot 정보 저장

  • last : 이전 로그인 기록 보기 (/var/log/wtmp)
  • 접속 계정명
  • 접속 장치명
  • 접속한 IP 주소
  • 접속시간
  • 시스템 재부팅 정보
  • 사용자의 루트접속 기록 저장(X)

btmp : 로그인 실패 정보 저장

  • lastb : 로그인 실패 기록 보기 (/var/log/btmp)

sulog : 명령어 기록 로그 (/var/log/sulog)

lastlog : 마지막 로그인 정보

secure 로그 : SSH의 로그인 및 인증정보 확인

messages 로그 : 시스템 부팅 시각, 네트워크 연결, 파일시스템 마운트, 시스템 장애 및 오류 정보 등 확인

dmesg 로그 : 시스템 부팅 관련 시스템 메시지 저장

cron 로그 : 작업 로그 기록

cron

리눅스/유닉스에서 작업을 정해진 시간에 자동 실행하게 해주는 스케줄러

  • crontab -r 명령어로 등록된 데이터를 삭제
  • 루트 권한으로 실행 당연히 가능
  • 특정 시간에 작업해야 하는 명령어 실행 가능
  • 파이썬, 펄 등의 스크립트 언어도 실행 가능

syslogd

  • syslog.conf 파일 설정에 따라 동작하는 로그 데몬
  • 커널 로그, 메시지 로그, secure 로그, 크론 로그, 부팅 로그, 메일 로그, 네임서버 로그, ftp로그 등을 관리
  • 데이터베이스 로그, 웹서버 로그, 메일 서버 로그 등은 개개의 시스템에서 운용하는 데 비해, syslog는 데몬 기반의 중앙로그 관리시스템이 관리함.

교착상태 대응 방법 : 예방, 회피, 탐지, 복구, (전이❌)

APT 공격 설명 : 지능적 지속형 공격. 타깃형. (특정인 대상), 백도어 설치로 통로 확보

Runtime.getRuntime).exec(cmd);
❗운영체제 명령어 삽입 공격
String cmd = args[0]; ~ .exec(cmd)
❗운영체제 명령어 삽입 공격에 취약

kali리눅스에 포함

  • tcpdump : 네트워크 패킷 캡처(죽 뜸)
  • burpsuite : 웹 트래픽을 가로채고, 수정하고, 분석
    • intruder 메뉴 : 무차별 대입공격, 퍼징 공격등 가능한 메뉴
  • hydra : 로그인 아이디 비번 무차별 시도
  • dirsearch(❌) : 웹서버의 숨겨진 디렉토리나 파일을 찾음

안드로이드 실행 명령어

  • pm : package manager. 패키지 설치, 제거, 확인
  • am : activity manager. adb 셀 내 액티비티의 실행 종료, 인텐드 브로드캐스트, profile의 시작과 종료 등의 작업
  • service : 서비스 목록 표시, 서비스에 명령어 전달
  • monkey : 무작위 이벤트(터치, 클릭, 스와이프 등)를 자동으로 발생시켜 테스트 (profile의 시작과 종료 ❌)
  • setpropgetprop : 전역설정 세팅, 보기

안드로이드 디렉터리

  • /data/local/tmp : 임의의 파일 업로드. adb를 통해 접속 후 쓰기 가능
  • /data/app : apk 설치할 때, 백업 apk 저장
  • /data/data : 사용자 정보, 동영상, 그림, 음악과 같은 리소스 파일 저장
  • /data/dalvic-cache : 달빅 바이트 코드 파일 저장
  • /data/misc : 사용자 정보, 블루투스, 와이파이

APK : 안드로이드 앱 설치 압축파일(zip과 동일)

apktool : APK 파일을 열어보고, 고치고, 다시 닫는 기능

airdroid : 무선 연결을 통해 PC에서 안드로이드를 제어할 수 있는 프로그램

SSL Pinning : 안드로이드 앱의 SSL/TLS로 암호화 통신에 사용되는 인증서를 최종 서버의 인증서로 조정하는 방식. 즉 중간자 공격 대응함

inflex : SMTP서버 중간에서 바이러스 검사, 첨부파일 필터링, 정책 적용 등 가능

난독화 종류

코드 난독화 : 디버깅, 디스어샘블을 못하게 하는 난독화

방지 난독화 : 난독화 무력 시도 자체를 어렵게 하는 난독화

데이터 난독화 : 데이터 값 자체를 가공하는 난독화

주소 난독화 : 메모리상의 주소를 숨기거나 불규칙하게 하는 난독화

보안이 가장 우수한 토폴로지 : Mesh형

ROT-13 알고리즘 : 앞의 13자리를 밀어냄

xp_cmdshell : MS-SOL에서 제공하는 프로시저. 명령 프롬프트에서 실행할 수 있는 모든 명령어들을 xp_cmdshell 프로시저로 실행할 수 있음

무선랜 표준

표준설명
IEEE 802.11b2.4GHz / 11Mbps
IEEE 802.11a5GHz / 54Mbps
IEEE 802.11n2.4GHz, 5GHz 동시 사용 / 600Mbps
IEEE 802.11ac5GHz / 다중 안테나 500Mbps

PGP(Pretty Good Privacy) : 이메일이나 파일을 암호화, 디지털 서명, 압축, 단편화와 재조립 등을 하는 암호화 프로그램 (부인방지X)

find -mtime -1 : 1일 이내 수정

find -mtime +3 : 3일 이상 수정 안 함

프로그램 위장 악성코드일수도 : svchost .exe

데이터베이스 암호화 기법

  • Plug-in : 별도 플러그인 붙여서 암호화
  • API : DB에 앞서서 API로 먼저 호출해 암복호
  • TDE(Transparent Data Encryption) : 디스크에 기록하기 전 암호화, 메모리 구간 보호는 불완전
  • DB Encoder(X) : 데이터베이스 관련 프로그램의 소스코드나 SQL 등을 난독화(encoding)하는 보안 도구. 즉 DB 자체를 암호화하는 기술이 아니라 프로그램 코드 보호용 도구.

포맷 스트링 : 문자열 형식 (“Hello, %s! You are %d years old.\n”)

%s나 %d부분에 중요한 메모리 주소를 출력할 수도 있음.

매개변수형식
%d정수형 10진수 상수
%s문자스트링
%x16진수 양의 정수
%hn%n의 반인 2바이트

포맷 스트링 점검 도구

  • gdb(GNU Debugger) : 리눅스 기본 디버거. 메모리, 레지스터의 변수 등 확인
  • objdump : Object 파일을 덤프. 정적 어샘블리 코드 출력.
  • ltrace : 동작 라이브러리 함수를 추적 (어떤 포맷 스트링이 실제 호출됐는지 확인)

개인정보 안전성 확보조치 기준 제8조(접속기록의 보관 및 점검) 제2항

개인정보처리자는 개인정보의 오·남용, 분실·도난·유출·위조·변조 또는 훼손 등에 대응하기 위하여 개인정보처리시스템의 접속기록 등을 월 1회 이상 점검하여야 한다. 특히개인정보의 다운로드가 확인된 경우에는 내부관리계획 등으로 정하는 바에 따라 그 사유를 반드시 확인하여야 한다

WannaCry : 랜섬웨어. Windows의 SMB(Server Message Block) 취약점(=EternalBlue)을 이용해 파일을 암호화하고 비트코인 요구.

Exploit : 취약점을 실제 공격·활용하기 위한 구체적인 기법 또는 코드.

Mirai Botnet : IoT 기기(공장 초기 비번 사용 등)를 감염시켜 만든 대규모 좀비 네트워크. DDoS 공격으로 대형 사이트 마비

Zero-Day Attack : 아직 공개도 안 되고 패치도 안 된 취약점을 노린 공격.

물리적 접근 필요한 공격들

  • 입출력 포트를 이용한 공격
  • 역공학을 통한 버스 프루빙 공격
  • 부채널 공격 : 암호 알고리즘 자체의 수학적 약점을 파는 게 아니라 시스템이 동작하는 물리적 특성(부채널) 을 관찰해서 비밀 정보를 빼내는 공격
  • 펌웨어 다운그레이드 공격 (X)

핑 스윕(Ping Sweep): 공격자가 다수의 IP에 ICMP Echo Request(ping)를 보내서 살아 있는 호스트(응답하는 IP)를 찾는 스캐닝 기법. 네트워크 침투의 첫 단계

nmap -sP -PS 192.1.10.111 --disable-arp-ping

-sP

  • 옛날 옵션 (현재는 -sn으로 대체됨).
  • Ping Scan: 포트 스캔 없이 호스트가 살아 있는지(Ping sweep)만 확인.

-PS

  • TCP SYN Ping.
  • 특정 포트(기본은 80, 443 등)에 SYN 패킷 보내서 응답(RST or SYN/ACK)으로 호스트 존재 여부 확인.
  • ICMP Echo가 차단돼 있어도 탐지 가능.

--disable-arp-ping

  • 같은 서브넷이면 nmap은 기본적으로 ARP Ping으로 호스트 확인함. (가장 확실한 방법)
  • 이 옵션은 이 동작을 끔. 따라서 ARP 대신 TCP SYN Ping(-PS)만 사용해서 확인.

보안테스트용 리눅스 변천

BackTrack

  • 보안 테스트용 리눅스 배포판 (2006~2013).
  • 우분투 기반.
  • 해킹·침투 도구들을 모아둔 최초의 “해킹 OS” 느낌.
  • 현재는 개발 중단 → Kali Linux로 계승됨.

Kali Linux

  • BackTrack의 후속작 (2013~).
  • 데비안 기반.
  • 600개 이상 해킹/보안 도구 내장 (nmap, metasploit, burpsuite 등).
  • 침투 테스트, 디지털 포렌식, 리버스 엔지니어링 등에 표준처럼 쓰임.

Parrot Security OS

  • 데비안 기반 (2013~).
  • 칼리와 비슷한 보안 도구 제공.
  • 차이점: 경량화, 프라이버시·익명성 강화(Tor, AnonSurf 내장), 개발·크립토그래피 환경까지 제공.

미고(Meego) : 모블린(인텔) + 마에모(노키아) 통합 OS

SSI(Server Side Includes) 취약점

<!--#echo var="DOCUMENT_ROOT" -->

서버 변수 DOCUMENT_ROOT 값을 화면에 찍어 보라! 즉, 홈 디렉터리가 표시하라고 하는데, 뜨면 보안 취약.

/etc/motd : telnet 또는 ssh로 shell 접속 시 로그인이 성공되었을 때 보이는 메시지

/etc/issue.net : telnet 또는 ssh로 shell 접속 시 (네트워크) 로그인 하기 전에 출력되는 메시지

/etc/issue: IDC 센터에 있는 Real 서버에 로컬로 KVM을 붙어서 확인했을 때 출력되는 메시지, 로컬 로그인 시 로그인 전 출력되는 메시지 설정

방화벽 배치구조

듀얼 홈드 게이트웨이(Dual-Homed Gateway)

  • 한 대의 방화벽 서버(호스트)에 두 개의 NIC(네트워크 카드) 를 장착.
  • 라우팅을 막고 반드시 프록시 기능을 거쳐야 통신 가능

스크린드 호스트 게이트웨이(Screened Host)

  • 외부 → 라우터(패킷 필터링) → 내부망
  • 라우터가 1차 필터링, 배스천 호스트가 2차 보안.

스크린드 서브넷 게이트웨이(Screened Subnet)

  • 외부 → 라우터(패킷 필터링) → DMZ → 라우터 → 내부망.
  • DMZ에는 웹서버·메일서버 등 외부 공개용 서버 배치

Null Session 공유 취약점

다른 컴퓨터에 사용자명과 패스워드 없이(Null) IPC$ 공유폴더에 접속이 가능했다. → 현재는 기본 차단

힙 오버플로우

프로그램 내부에서 동적 메모리를 할당(malloc(), new() 등)할 때 사용되는 영역(힙) 이용

넘처 흐른 부분에 셸코드 삽입 공격 = Heap Spray

DLL 인젝션 : 임의의 DLL 파일을 원하는 프로세스메모리 영역으로 로드하는 것

TCP keepalive : 연결이 장시간 아무 데이터도 주고받지 않을 때, 상대방이 아직 살아있는지 확인하기 위한 주기적인 신호(ping)

WAF(Web Application Firewall)

UTM(Unified Threat Management) : 바이러스 방지, 멀웨어 방지, 칩입차단 시스템, VPN 등을 하나로 통합한 보안 솔루션

DLP(Data Loss Prevention) : 데이터 유출 방지 시스템

NAC(Network Access Control) : 네트워크 접근 관리 시스템

snort : IDS IPS 전환가능. 가벼움 / 비밀번호 알아내는 도구 X

RELRO(Relocation Read-Only)

GOT Overwrite와 같은 공격에 대비해서 ELF 바이너리(리눅스 실행파일) 또는 프로세스의 데이터 섹션을 보호하는 방법

Full-RELRO 옵션을 주면, .ctors, .dtors, .jcr, .dynamic, .got섹션이 Read Only

PIE(Position Independent Executable) : 실행파일을 어떤 주소에도 로드 가능하게 만드는 컴파일 방식. 바이너리 주소를 랜덤하게 매핑, ASLR 기능을 바탕으로 작동

ASLR : 메모리 주소를 실행할 때마다 랜덤화하는 OS 보안 기능

echo 2 > /proc/sys/kernel/randomize_va_space
# 0 : ASLR 비활성화
# 1 : 부분 활성화
# 2 : 완전 활성화

메모리 보호기법

DEP(Data Execution Prevention) : 같은 데이터 메모리에서 실행을 차단해서 버퍼 오버플로 공격을 방지

Stack Canary : 함수 실행 시 리턴 주소 앞에 Canary 값을 넣고, 함수 종료 시 값이 변했는지 검사해서 변하면 프로그램을 종료하여 공격을 차단

RTL(Return to Library)

버퍼 오버플로 시 공격 코드를 실행하지 않고, 이미 존재하는 라이브러리 함수(system 등)를 호출하도록 리턴 주소를 (스택에서) 조작하는 공격

  • (원래) 함수 끝 → return → 원래 프로그램으로 돌아감
  • (조작) 함수 끝 → return → system(“/bin/sh”) 실행

ASCII-Armor : RTL공격에 대응하기 위해, 공유 라이브러리 영역의 상위주소에 0x00을 포함시킴

POF(Passive OS Fingerprinting) 옵션

추가 패킷을 보내지 않고, Passive하게 이미 오가는 네트워크 트래픽을 관찰해서 OS를 추측

  • -p 무차별모드.
  • -i 인터페이스 : 감시할 인터페이스 지정
  • -r 파일 : .pcap 파일에서 트래픽을 읽어서 분석
  • -o 파일 : 분석결과를 파일로 저장

EFS(Encrypting File System) 암호화의 특징

  • 폴더와 파일을 암호화할 수 있고 하위 폴더도 자동으로 암호화된다.
  • 암호화 된 파일도 일반 파일과 동일하고 읽고 쓸 수 있다.
  • 파일을 읽는 동안 자동으로 암호화가 해제된다.
  • 사용자가 파일을 닫으면, EFS 암호화가 된다.
  • 암호화한 파일은 암호화한 사람만 읽을 수 있다.
  • chiper 명령어를 통해 NTFS volume에 파일 또는 폴더의 암호화 속성을 변경, 상태표시 할 수 있다.
  • 암호화 파일을 NTFS가 아닌 다른 볼륨으로 복사하면 복호화 된다.
  • 압축된 파일 및 폴더는 암호화 불가능

BitLocker vs EFS

구분설명
BitLocker디스크 전체 볼륨을 암호화
시스템 파티션 부분 암호화(X)
모든 사용자 계정을 암호화 및 TPM(Trusted Platform Module) 하드웨어를 사용
Windows Vista, 7, 8, 8.1, 10, 11 호환
NTFS, FAT16, FAT32, exFAT 지원
EFS개별 파일 및 디렉터리를 암호화
사용자 단위 데이터 암호화
암호화 키는 TPM 하드웨어를 사용하지 않고 운영체제에 보관

IDS 종류

  • 호스트 기반 IDS : 호스트 로그 정보를 기반으로 탐지
  • 네트워크 기반 IDS : 네트워크 전송 패킷 모니터링으로 탐지

클라우드 보안인증제

  • IaaS, DaaS : 유효기간 5년
  • SaaS표준등급 : 유효기간 5년
  • SaaS간편등급 : 유효기간 3년

탭내빙(Tabnabbing) : 사용자가 눈치 못 채는 사이 보고 있던 부모탭을 변조(리다이렉트)하는 공격

**대응방법**
<a href="https://example.com" target="_blank" rel="noopener"> *** opener 차단
<a href="https://example.com" target="_blank" rel="noreferrer""> *** Referer 정보 차단

BSM(Basic Security Module)

  • 솔라리스 시스템에서 제공하는 커널 기반 로깅 모듈
  • 시스템 자원을 5~10% 정도 점유. 기본동작은 아님.
  • 특정 계정이나, 시스템 동작에 따른 집중로그 분석(감사 목적)
  • 바이너리 형태 저장
  • syslog와는 다름

디스크 스케줄링 알고리즘 중 엘리베이터 알고리즘 : SCAN

EDR(Endpoint Detection Response) 기능

  • PC의 행위와 이벤트 정보를 수집하여 공격을 탐지하는 보안 솔루션
  • 보안사고 탐지
  • 보안사고 억제
  • 보안사고 조사
  • 보안사고 치료
  • 보안사고 확산(X)

XDR(extended Detection Response)

정보수집 대상을 단말, 서버, 네트워크뿐만 아니라 클라우드까지 확장

원격 관리를 위해 “원격 시스템에서 강제로 종료” 정책의 “Administrators” 외 서버에 등록된 계정을 모두 등록하였다. (X)

리눅스에서 사용하는 심볼릭 링크는 Windows의 바로가기와 같은 역할을 하는 링크로, 무결성 보장과는 관계가 없다.

파일을 파티션 했다고 파일 시스템의 성능이 낮아지지 않는다.

쿠키(cookie)

  • Set-cookie 헤더를 통해 쿠키값 설정
  • 여러 개의 값을 추가 시 “,”문자 사용
  • 쿠키의 구조는 이름=값 형태로 구성
  • 세션쿠키는 웹브라우저, 연속적 쿠키는 사용자 PC에 저장(쿠키는 클라이언트에 저장)
<%
response.addCookie(new Cookie("name", "LimBest"));
response,addCookie(new Cookie('age", "28")):
%>

httpOnly 속성 : Set-Cookie 응답 헤더에 설정, 클라이언트에서 스크립트를 통해 해당 쿠키에 접속하는 것을 차단. XSS 공격으로 부터 세션 쿠키 탈취 방지.

DLP(Data Loss Prevention)와 DRM(Digital Rights Management)

DLP데이터의 이동경로를 분석해서 기업 내부정보 유출을 감사, 차단
DRM문서를 암호화하고 특정 사용자만 접근 허용

문서를 생성하자마자 자동으로 암호화를 한다. 암호화된 문서는 외부로 유출해도 복호화할 수가 없다.

AI 관련 보안

Adversarial 공격 : 딥러닝에서 노이즈를 추가하여 컴퓨터가 오분류를 일으키게 하는 것으로 머신러닝의 GAN(Generative Adversarial Network)에 의해 나타남

* GAN : 학습을 위한 이미지가 부족할 때 유사한 이미지를 머신러닝으로 생성하여 샘플링을 확보하는 방법

Membership inference 공격 : 어떤 특정 데이터(예: 개인 레코드)가 모델의 학습 데이터에 포함되었는지 판단하려는 공격. 개인정보 노출.

Poisoning 공격 : 학습 데이터에 악의적 샘플을 섞어 모델 성능을 저하시킴

Model inversion 공격 : 모델의 예측·출력을 이용해 특정 입력(특히 민감한 속성이나 실제 이미지 등)을 역추정하려는 공격. 개인의 민감 정보 재구성.

Visual Basic 스크립트 : 스크립트는 평문(.vbs 등)이라 내용 확인 가능

VBScript는 FileSystemObject 등으로 파일 생성·복제 가능 → 웜형 제작 가능(실제 사례 다수)

VBScript의 확장자는 .vbs. VBA는 애플리케이션 매크로 환경 이름.

러브버그(ILOVEYOU) 웜은 이메일을 통해서 감염되며 “LOVE-LETTER-FOR-YOU.TXT.vbs”라는 파일을 첨부하고 수신자가 이를 실행하면 감염
VBScript(.vbs) 으로 제작되어 대량 전파

/etc/sudoers

리눅스에서 sudo 권한을 어떻게 줄지 정의하는 파일

사용자 호스트 = (대상 사용자 : 대상 그룹) 실행할 명령

%admin ALL=(ALL) ALL <<admin 그룹 모든 권한>>
%sudo ALL=(ALL:ALL) ALL <<sudo 그룹 모든 권한>>
root ALL=(ALL:ALL) ALL <<root 사용자 모든 권한>>
guest3 ALL=(ALL:ALL) ALL <<guest3 사용자 모든 권한>>
test ALL=(ALL) NOPASSWD:/sbin/shutdown 
<<test 계정은 shutdown 명령어 실행 시 패스워드를 묻지 않음>>
uid=(12)guest3, gid=(12)guest3, groups=(12)guest3,5(adm)
유저12는 guest3이고, 그룹12는 guest3다. 속한 그룹은 번호12의 guest3와 번호5의 adm에 속해있음

랜섬웨어

  • 양방향 암호화 사용. 단방향 암호화를 하면 공격자도 암호화된 파일을 복구할 수 없기 때문에 파일의 복호화를 인질로 삼아 금품을 요구할 수가 없음.
  • 파일 확장자를 임의 변경한다.
  • 안티바이러스 프로그램을 강제 종료
  • 윈도우 복원 시점을 제거

화이트박스 분석 : 소스코드를 직접 관찰하고 그 구조를 이해하며 소스코드 단계별로 프로그래밍의 오류를 찾는다.

블랙박스 분석 : 소스코드에 대한 지식 없이 실행 중인 프로그램에 입력 값과 출력 값을 기준으로 오류를 찾는다.

그레이박스 분석 : 화이트박스 테스트와 블랙박스 테스트를 결합한 것으로, 알고 있는 일부 소스코드 정보를 이용하여 테스트를 설계하며 블랙박스 테스트 형태로 분석.

접근 통제모델

  • 임의적 접근 통제 (DAC, Discretionary Access Control) : 리소스 소유자(파일 소유자 등)가 접근 권한을 임의로 부여/회수함. 주체소속 그룹의 ID에 근거함. 유연하지만 권한 남용 위험 ↑
  • 강제적 접근 통제 (MAC, Mandatory Access Control) : 중앙 정책(라벨·등급)에 따라 접근이 강제 결정됨(예: 비밀·기밀 등급). 보안성 높고 관리자가 일괄 통제.
  • 직무 기반 접근 통제 (JBAC, Job-based AC) : 사용자의 직무(job)에 따라 필요한 권한을 부여하는 모델. 직무 중심으로 최소권한 원칙 적용
  • 역할 기반 접근 통제 (RBAC, Role-Based AC) : 역할(role)에 권한을 매핑하고 사용자는 역할을 할당받음. 관리 효율성이 높아 기업 환경에서 널리 사용.

파일 디스크립터(File Descriptor, FD)

리눅스/유닉스에서 프로세스가 열어둔 파일이나 입출력 자원을 가리키는 작은 정수 번호

  • 0 → 표준 입력(stdin)
  • 1 → 표준 출력(stdout)
  • 2 → 표준 오류(stderr)

커널이 관리함.

사용자가 직접 관리(X)

시스템이 필요한 정보만 보관

보조기억장치에 저장되어 있다가 파일을 열면 그때 주기억장치로 옮겨짐

파일제어블록이라고도 함.

TCP-Wrapper : 특정 프로그램에 특정 IP가 접근할 수 있도록 허용하거나 거부

WORM(Write Once Read Many) 스토리지 : 시스템에 공격자가 침입하면, 증거인멸을 위해 로그파일 삭제를 시도하는데, 웜 스토리지는 기록을 1번만 할 수 있으므로 로그파일을 삭제할 수 없음.

sysctl kernel.ipv4.icmp_echo_ignore_all=1
→모든 IPv4 echo request를 무시(유니+브로드 포함)
sysctl kernel.ipv4.icmp_echo_ignore_broadcasts=0
→모든 브로드캐스트 허용

정보노출 : 중요정보가 노출되거나 에러 발생 시에 과도한 정보가 노출되는 보안 약점

인증장치

USB 메모리에 디지털 증명서를 넣어 디바이스 인증하는 경우는 증명서만 있으면 되지, PC의 MAC 어드레스가 필요하지는 않음.

성인의 홍채는 변화가 없고 홍채 인증에서는 인증 장치에서의 패턴 갱신이 불필요(O)

정전용량 방식전기적 차이로 작동(O), 빛(X)

접촉형 IC 카드는 카드 내의 코일의 유도 기전력을 이용.

하드닝(Hardening) : 시스템 보안을 견고하게 하기 위해서 취약점을 줄여서 보안을 강화하는 활동

cf) 백업은 보험이지, 취약점 자체를 줄이는 게 아님.

메모리 관리기법

  • First Fit (최초 적합) : 처음부터 탐색하여 처음 맞는 공간에 할당
  • Next Fit (순환 최초 적합) : 이전에 할당한 위치 다음부터 탐색
  • Best Fit (최적 적합) : 가장 크기가 작은 적합 공간에 할당
  • Worst Fit (최악 적합) : 가장 큰 공간에 할당

스파이웨어 : 사용자의 동의없이 설치되어 컴퓨터 정보 및 사용자 개인정보를 수집하고 전송

백도어 : 인증 우회해서 숨겨진 접근 통로를 만듦

심볼릭 링크를 이용한 레이스 컨디션 공격은, 프로그램 동작 및 임시 파일 처리 단계에서 진행.

스노트(snort)룰 예시

alert tcp any any -> any any (flow:to_server; content:"|FF FF|"; offset:9; depth:2; msg:"Error";sid:1000002;)

alert

  • 조건에 맞으면 경고 발생

tcp

  • TCP 패킷 검사

any any -> any any

  • 출발지 IP / 포트 : 모두 허용
  • 목적지 IP / 포트 : 모두 허용
  • -> : 출발지 → 목적지 방향

flow:to_server;

  • 클라이언트 → 서버 방향 패킷만 검사

content:”|FF FF|”

  • 패킷 데이터에 16진수 FF FF 패턴이 있는지 검사

offset:9

  • 데이터 시작 기준 9바이트 뒤부터 검사

depth:2

  • 검사 시작 위치부터 2바이트만 검사
  • 9~10번째 바이트가 FF FF인지 검사

msg:”Error”

  • 탐지 시 로그 메시지 “Error” 출력

sid:1000002

  • Snort 룰 고유 ID

매크로 바이러스 : 문서 프로그램의 매크로 기능을 이용하여 감염·전파되는 바이러스.

  • 플랫폼과 무관하게 실행된다.
  • 주로 이메일을 통해 감염된다.
  • 문서 파일의 기능을 악용한다.
  • (X) EXE 형태 / Ofiice 내에 기생 (O)

파일 시스템 터널링(File System Tunneling)

  • Windows에서 삭제된 파일 정보(메타데이터)를 일정 시간 유지하는 기능이다.
  • 같은 이름의 파일을 다시 만들면 이전 파일의 생성시간 등 속성이 자동 적용된다.
  • 공격자가 이를 이용해 파일 변경을 숨기거나 흔적을 위장할 수 있다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\MaximumTunnelEntryAgeInSeconds #캐시유지시간(초)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\MaximumTunnelEntries #0:비활성, 1:활성

타임스톰핑(Time Stomping)

  • 파일의 시간 정보(생성·수정·접근 시간 메타데이터)를 조작하는 공격 기법이다.
  • 악성코드나 공격 흔적을 정상 파일처럼 보이게 위장하기 위해 사용된다.

시그니처 (Signature) : 응용 프로그램에서 생성된 파일은 그 응용 프로그램이 생성한 파일임을 인식할 수 있도록 항상 동일한 몇 바이트를 파일 내부의 특정 위치에 고정

바이오스(BIOS)

  • 하드디스크의 구성, 종류, 용량을 확인 가능
  • 운영체제와 하드웨어 사이의 입출력을 담당하는 펌웨어
  • BIOS에 저장된 시스템 시간은 포렌식 관점에 매우 중요
  • 전원이 공급되지 않아도 정보 유지(ROM 사용)

인증방식에 따른 분류

  • Type 1 인증
    • Something you know(당신이 알고 있는 것)
    • 지식 기반
    • Password, Pin, Passphrase
  • Type 2 인증
    • Something you have(당신이 가지고 있는 것)
    • 소유 기반
    • Smart card, tokens
  • Type 3 인증
    • Something you are(당신 모습 자체)
    • 존재(생체) 기반
      • 홍체, 지문, 정맥
  • Type 4 인증
    • Something you do(당신이 하고 있는 것)
    • 행동 기반
    • 음성, 서명, Keystroke Dynamics
  • (X) 당신이 위치를 알고 있는 것
find / -user root -type f \( -perm -06000 \) -exec ls -al {} \;

Race Condition(레이스 컨디션) : 동시에 자원에 접근하여 실행 순서에 따라 결과가 달라지는 상태




댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다