협업 > 관리 > chfi


2025_비교과(chfi)

일정 : 2025.09.19 ~ 2025.12.XX(10주)
시간 : 16:00 ~ 20:00(4시간*10 : 40시간) /
금남TV : 실습 영상
상세진행사항(실기위주 설명)
회차 내용 날짜
1회차 포렌식실습을 위한 파이썬과 플라스크 설치 2025.09.19
2회차 포렌식 프로그램 설치(Autospy,OSForensic) 및 실습 2025.09.26
3회차 CHFI란(온라인) 2025.10.10
4회차 CHFI 문제와 포렌식 실습 2025.10.17
5회차 CHFI 문제와 포렌식 실습 2025.10.24
6회차 CHFI 문제와 포렌식 실습 2025.10.31
7회차 CHFI 문제와 포렌식 실습 2025.11.07
8회차 CHFI 문제와 포렌식 실습 2025.11.14
9회차 CHFI 문제와 포렌식 실습 2025.11.21
10회차 CHFI 문제와 포렌식 실습 2025.11.28
11회차 CHFI 문제와 포렌식 실습 2025.12.05

실습을 위한 필수 프로그램
1. GNS3 받기 (네트워크 실습을 위한 필수 프로그램 / 회원가입 필요함)
2. XSHELL 받기(리눅스 접속을 위한 프로그램)
3. VirtualBox 받기(리눅스나 윈도우 설치를 위한 프로그램)
4. 우분투서버(이미지)
5. 럭키리눅스서버(이미지)
6. 윈도우서버(이미지)

1일차 강의 : 파일 받기1
1일차 강의 : 파일 받기2
1일차 강의 : 파일 받기3
리눅스 서버 구축
위치 : /home/master
sudo hostnamectl set-hostname chfi
sudo reboot
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
sudo apt update
sudo apt install python3-venv
mkdir projects
mkdir venvs
cd venvs
nano mysite.env
FLASK_APP=chfi
FLASK_DEBUG=true
APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
nano mysite.sh
#!/bin/bash
cd ~/projects/flask
export FLASK_APP=chfi
export FLASK_DEBUG=true
export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
. ~/venvs/mysite/bin/activate
nano .profile
alias mysite='export FLASK_APP=chfi;export FLASK_DEBUG=true;export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py;cd ~/projects/flask;. ~/venvs/mysite/bin/activate'
cd venvs
python3 -m venv mysite
cd mysite
cd bin
. activate
pip install wheel
pip install flask
pip install flask-migrate
pip install flask-wtf
pip install email_validator
pip install flask-markdown
cd ~/projects
unzip flask.zip
cd flask
flask db init
flask db migrate
flaks db upgrade
flask run --host=0.0.0.0
pip install gunicorn
cd ~/projects/flask
gunicorn --bind 0:5000 "chfi:create_app()"
gunicorn --bind unix:/tmp/mysite.sock "chfi:create_app()"
[파일명: /etc/systemd/system/mysite.service]
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=master
Group=master
WorkingDirectory=/home/master/projects/flask
EnvironmentFile=/home/ubuntu/venvs/mysite.env
ExecStart=/home/ubuntu/venvs/mysite/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/mysite.sock \
"chfi:create_app()"
[Install]
WantedBy=multi-user.target
sudo systemctl start mysite.service
sudo systemctl enable mysite.service
sudo apt install nginx
cd /etc/nginx/sites-available/
sudo nano mysite
server {
listen 80;
server_name XXX.XXX.XXX.XXX;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/master/projects/flask/chfi/static;
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/mysite.sock;
}
}
cd /etc/nginx/sites-enabled/
sudo rm default
sudo ln -s /etc/nginx/sites-available/mysite
sudo systemctl restart nginx
sudo nginx -t
sudo systemctl stop nginx
sudo systemctl start nginx

윈도우 환경 구축
C:\> mkdir venvs
C:\> cd venvs
C:\venvs> python -m venv mysite
C:\venvs> cd C:\venvs\mysite\Scripts
C:\venvs\mysite\Scripts> activate
(mysite) C:\venvs\mysite\Scripts>
pip install flask
python -m pip install --upgrade pip
pip install flask_migrate
pip install requests
pip install flask_wtf
pip install pymysql
[파일명: C:/venvs/mysite.cmd]
@echo off
cd c:/projects/flask
set FLASK_APP=chfi
set FLASK_DEBUG=true
set APP_CONFIG_FILE=c:\projects\flask\config\development.py
c:/venvs/mysite/scripts/activate

C:\projects\flask
flask run <윈도우+R> 키를 입력하여 다음처럼 sysdm.cpl
참고사이트
https://wikidocs.net/book/4542(점프투플라스크)
2일차 강의 프로그램 만들기
번호 구분 기능
1 해시분석 파일 또는 문자열의 해시값을 구한다.
2 메타분석 사진,파일의 정보를 분석한다.
3 확장자불일치 파일확장자와 파일시그니처를 탐지한다.
4 암호 압축파일 암호가 존재하는지 탐지하고 암호를 해결한다.
5 레지스트리 윈도우 레지스트리를 분석하여 연결된 USB정보를 분석한다.
6 이메일분석 썬더버드에 저장되어 있는 INBOX파일을 분석한다.
7 암호화 프로그램 트루크립터,베라크립터가 있는지 탐지한다.
8 윈도우의 초기 설치 윈도우 초기 설치시 생성되는 모든 파일을 확인한다.
9 키워드 검색 분석의 범위를 줄이기 위한 키워드 분석 프로그램 직접 만들어본다.
10
11
12
13
14
15

3일차 E01 분석하기 (파일 다운받기)
  1. FTK Imager 다운로드하기 | 바로받기
  2. E01의 해시값은 얼마인가?
    한글 : HWP, HWPX
    엑셀 : xls or xlsx
    E01 파일은 뭐냐? Encase라는 포렌식 회사 만든 분석용 이미지 확장자
  3. 파일시스템은 정상인가?
    비정상이다!
    이유는?
    MBR(Master Boot Record) : 0Sector(512)중에 파티션테이블(64byte : 16byte*4)의 정보를 분석후
    VBR(Volumn Boot Record) : (512) 바이트 내용들이 00으로 저장되어 있다라는 뜻은 누군가가 의도적으로
    회손했다.!
    결론 : VBR 손상되어 있기 때문에 분석 불가능합니다.
    VBR > VBR 복구 > 파일 시스템 >
    NTFS 파일시스템의 특징 : 백업본 VBR이 그 파티션의 마지막 Sector
    FAT32파일시스템의 특징 : 백업본 VBR이 6번째 Sector
    MBR을 확인해라!
    VBR을 확인해라!
    만약에 MBR이 비정상이라면 정상화 시켜라!
    단 파이썬 프로그램을 이용해서 정상화 시켜라!
    partition1(100MB)
    partition2(300MB)
    partition3(109MB)
    33C08ED0BC007C8EC08ED8BE007CBF00
    06B90002FCF3A450681C06CBFBB90400
    BDBE07807E00007C0B0F850E0183C510
    E2F1CD1888560055C6461105C6461000
    B441BBAA55CD135D720F81FB55AA750
    9F7C101007403FE46106660807E100074
    2666680000000066FF76086800006800
    7C680100681000B4428A56008BF4CD13
    9F83C4109EEB14B80102BB007C8A5600
    8A76018A4E028A6E03CD136661731CFE
    4E11750C807E00800F848A00B280EB84
    5532E48A5600CD135DEB9E813EFE7D55
    AA756EFF7600E88D007517FAB0D1E664
    E88300B0DFE660E87C00B0FFE664E875
    00FBB800BBCD1A6623C0753B6681FB54
    435041753281F90201722C666807BB00
    00666800020000666808000000665366
    5366556668000000006668007C000066
    6168000007CD1A5A32F6EA007C0000CD
    18A0B707EB08A0B607EB03A0B50732E4
    0500078BF0AC3C007409BB0700B40ECD
    10EBF2F4EBFD2BC9E464EB002402E0F8
    2402C3496E76616C6964207061727469
    74696F6E207461626C65004572726F72
    206C6F6164696E67206F706572617469
    6E672073797374656D004D697373696E
    67206F7065726174696E672073797374
    656D000000637B9A6D47ECF000000002
    030007C0340C800000000020030000C0
    350C0B000D3380200300006009000000
    0E3307E4244080800C00006803000000
    000000000000000000000000000055AA
    13th.E01(비정상)
    656D000000637B9A6D47ECF000000002
    030007C0340C800000000020030000C0
    350C0B000D3380200300006009000000
    0E3307E4244080800C00006803000000
    000000000000000000000000000055AA
    Win2022.vdi(정상)
    656D000000637B9ABB608B0E00008020
    210007DF130C000800000020030000DF
    140C07FEFFFF0028030000702C0600FE
    FFFF27FEFFFF00982F060058100000000
    00000000000000000000000000055AA
    13th.E01(비정상)
    파티션테이블
    00 020300 07 C0340C 80000000 00200300 (16바이트)
    00 C0350C 0B 000D33 80200300 00600900(16바이트)
    00 000E33 07 E424408 0800C00 00680300 (16바이트)
    00 000000 00 0000000 0000000 00000000 (16바이트)
    Win2022.vdi(정상)파이션테이블
    80 202100 07 DF130C 00080000 00200300(16바이트)
    00 DF140C 07 FEFFFF 00280300 00702C06 (16바이트)
    00 FEFFFF 27 FEFFFF 00982F06 00581000 (16바이트)
    0000000000000000000000000000000 (16바이트)
  4. 비정상이라면 복구하는 방법은 무엇인가?
    chatgpt와 파이썬을 이용해서
    손상된 13th파일의 vbr를 자동으로 복구하는 프로그램
    1. 20251010001.001을 읽는다.
    2. 0sector중에 파티션 테이블 읽고 정상인지 아닌지 확인후
    정상이라면 각각의 파티션테이블로 이동후 VBR을 읽는다.
    3. VBR을 읽을때 NTFS라면 첫번째 sector와 마지막 sector의 위치를
    찾아 VBR(512)가 일치하는지 검사하고 만약에 조사시 조건이 틀리면
    백업본을 이용해서 복구한다.
    완성후 코드 제출하시면 됩니다.
  5. 분석용 프로그램 설치하기(1. Autospy, 2.OSForensic, 3.ForensicExplorer)
  6. 파일시그니처와 확장자가 불일치하는 파일은 있는가?
  7. 압축파일은 있는가?
  8. 압축파일에는 암호가 있는가?


4일차 강의
라우터란
라우터는 네트워크와 네트워크를 연결해주는 장치
라우터의 주요 역할
네트워크 연결 내부 네트워크(예: 집, 회사 LAN)와 외부 네트워크(예: 인터넷)를 연결
패킷 전달 (Routing) 목적지 IP 주소에 따라 데이터를 가장 적절한 경로로 전달
IP 주소 할당 DHCP 기능을 통해 내부 장치에 자동으로 IP 주소 할당
NAT 기능 내부 사설 IP를 외부에서 인식 가능한 공인 IP로 변환 (보안 및 자원 절약)
방화벽 기능 트래픽을 제어하고 악의적인 접근을 차단

라우터의 위치는?


집에서 사용하는 공유기(라우터)


라우팅
정적라우팅
동적라우팅
  • RIP
  • OSPF

    라우터 명령어
    번호 명령어 기능
    1 enable 관리자모드로 진입
    2 config t 설정모드로 진입
    3 exit 끝내기
    4 show ip interface brief 인터페이스 상태 요약
    5 show running-config 현재 설정 확인
    6 show ip dhcp binding DHCP로 할당된 IP 목록 확인
    7 hostname [이름] 장비 이름 설정
    7 ip route [목적지 네트워크] [서브넷마스크] [다음 홉 IP 또는 인터페이스] DNS 캐시 목록 보기
    7 ping 대상 서버와의 연결 확인 (응답 시간 포함)
    8 tracert 목적지까지의 경로 추적 (라우터 경유 확인)
    9 pathping ping + tracert 기능 통합, 상세 경로 분석
    10 nslookup DNS 서버에서 IP 주소 조회
    11 arp -a ARP 테이블 확인
    12 netstat -anbr 현재 네트워크 연결 상태 확인 (포트, 연결 상태 등)
    13 netsh interface ip show config 네트워크 인터페이스의 IP 구성 정보 확인
    14 netsh interface ip set address 수동 IP 주소 설정
    15 netsh wlan show profiles 저장된 Wi-Fi 프로파일 확인
    16 netsh winsock reset 소켓 초기화 (네트워크 오류 시 자주 사용)
    17 ipconfig /release july@example.com
    18 net view 현재 네트워크에서 공유된 컴퓨터 목록 확인
    19 net use 네트워크 드라이브 연결 또는 해제
    20 net use Z: \\서버이름\공유폴더 네트워크 드라이브 연결
    21 net share 공유 폴더 목록 확인 또는 공유 설정
    22 net session 현재 컴퓨터에 접속한 사용자 확인
    23 tasklist /fi "imagename eq [이름]" 특정 프로세스가 동작 중인지 확인
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    config t
    interface fastethernet 0/0
    ip address 192.168.0.254 255.255.255.0
    no shutdown
    interface serial 1/0
    ip address 1.1.1.1 255.255.255.252
    no shutdown
    ip route 172.16.0.0 255.255.255.0 1.1.1.2
    #R2
    config t
    interface fastethernet 0/0
    ip address 172.16.0.254 255.255.255.0
    no shutdown
    interface serial 1/0
    ip address 1.1.1.2 255.255.255.252
    no shutdown
    ip route 192.168.0.0 255.255.255.0 1.1.1.1

    [R1한방설정(OSPF)]
    config t
    interface FastEthernet0/0
    ip address 100.100.100.254 255.255.255.0
    no shutdown
    exit
    interface Serial1/0
    ip address 4.4.4.1 255.255.255.192
    no shutdown
    exit
    router ospf 1
    network 100.100.100.0 0.0.0.255 area 0
    network 4.4.4.0 0.0.0.63 area 0
    router-id 1.1.1.1
    exit
    ip dhcp excluded-address 100.100.100.1 100.100.100.254
    ip dhcp pool hacker
    network 100.100.100.0 255.255.255.0
    default-router 100.100.100.254
    dns-server 125.246.95.152
    lease 1 0 0 !
    exit
    [R2한방설정(OSPF)]
    config t
    interface FastEthernet0/0
    ip address 125.246.95.254 255.255.255.0
    no shutdown
    exit
    interface Serial1/0
    ip address 4.4.4.2 255.255.255.192
    no shutdown
    exit
    router ospf 1
    network 125.246.95.0 0.0.0.255 area 0
    network 4.4.4.0 0.0.0.63 area 0
    router-id 2.2.2.2
    exit

    3일차
    리눅스 접속 : ssh network.izerone.co.kr
    리눅스 명령어
    번호 명령어 기능
    1 ls 목록확인
    2 man ls ls에 대한 설명
    3 cat 파일명 파일 내용 보기
    4 nano 파일명 파일 편집
    5 chmod 권한설정
    6 useradd 사용자추가
    7 free 메모리확인
    8 fdisk 파티션 나누기
    9 mkfs 파일시스템만들기
    10 mount 연결
    11 netstat 네트워트 상태보기
    12 ip addr 아이피 확인
    13 ping ip 보내기
    14 pwd 현재위치확인
    15 cd 디렉토리 변경
    16 /etc/passwd 수동 IP 주소 설정
    17 ps 프로세스확인
    18 pstree 프로세스나무확인
    19 getenforcce
    18 net view 현재 네트워크에서 공유된 컴퓨터 목록 확인
    19 net use 네트워크 드라이브 연결 또는 해제
    20 net use Z: \\서버이름\공유폴더 네트워크 드라이브 연결
    21 net share 공유 폴더 목록 확인 또는 공유 설정
    22 net session 현재 컴퓨터에 접속한 사용자 확인
    23 tasklist /fi "imagename eq [이름]" 특정 프로세스가 동작 중인지 확인
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    11 ipconfig /release july@example.com
    [20250525_28]
    Linux 시스템에서 사용자가 내린 명령어를 Kernel에 전달해 주는 역할을 하는 것은?
    ① System Program
    ② Loader
    ③ Shell
    ④ Directory

    [20250525_29]
    Linux 디렉터리 구성에 대한 설명으로 옳지 않은 것은?
    ① /tmp - 임시파일이 저장되는 디렉터리
    ② /boot - 시스템이 부팅될 때 부팅 가능한 커널 이미지 파일을 담고 있는 디렉터리
    ③ /var - 시스템의 로그 파일과 메일이 저장되는 위치
    ④ /usr - 사용자 계정이 위치하는 파티션 위치

    [20250525_30]
    Linux에서 DNS의 SOA(Start Of Authority) 레코드에 대한 설명으로 옳지 않은 것은?
    ① Zone 파일은 항상 SOA로 시작한다.
    ② 해당 Zone에 대한 네임서버를 유지하기 위한 기본적인 자료가 저장된다.
    ③ Refresh는 주 서버와 보조 서버의 동기 주기를 설정한다.
    ④ TTL 값이 길면 DNS의 부하가 늘어난다.

    [20250525_31]
    Linux 시스템에서 모든 사용자에게 'sample' 파일의 쓰기 권한을 금지시키고자 할 때 명령어로 올바른 것은?
    ① chmod a-w sample
    ② chmod u-w sample
    ③ chmod g+rw sample
    ④ chmod a-r sample

    [20250525_32]
    Linux 시스템에 새로운 사용자를 등록하려고 한다. 유저 이 름은 ′network′로 하고, ′icqa′라는 기본 그룹에 편입시키는 명령은?
    ① useradd -g icqa network
    ② useradd -g network icqa
    ③ adduser -g network icqa
    ④ adduser -G icqa network

    [20250525_33]
    Linux 시스템에서 사용되고 있는 메모리 양과 사용 가능한 메모리 양, 공유 메모리와 가상 메모리에 대한 정보를 볼 수 있는 명령어는?
    ① mem
    ② free
    ③ du
    ④ cat

    [20250525_41]
    다음 중 Linux 시스템에서 새로운 하드디스크를 추가하고 사용할 수 있도록 설정하는 과정과 관계가 가장 적은 것은?
    ① fdisk
    ② mkfs
    ③ mount
    ④ cal

    [20250525_42]
    다음 중 Linux의 BIND 설치 및 운영 시 수행해야 할 업무로 적절하지 않은 것은?
    ① 방화벽에서 UDP의 53번 포트만 열면 된다.
    ② 방화벽 설정은 ′iptables′ 명령어를 통해 설정할 수 있다.
    ③ BIND 설치여부는 ′rpm -qa | grep bind′ 로 확인할 수
    있다.
    ④ ′/etc/named.conf′ 파일의 오류를 체크하는 명령어는 ′ named-checkconf′ 이다.

    [20250525_44]
    사용자가 웹사이트에 접속했지만 다음과 같은 메시지가 출 력되었다. 이 오류 상황에 해당하는 HTTP 상태 코드는?
    Forbidden
    이 요청은 서버에 의해 거부되었습니다. 사용자는 이 콘텐츠에 접근할 권한이 없습니다.
    ① 400
    ② 200
    ③ 403
    ④ 203

    [20250525_45]
    Linux Apache 웹서버 httpd.conf 설정값 중 Directory Indexing 공격에 취약할 수 있는 옵션은?
    ① Options FollowSymLinks Indexes
    ② ServerAdmin : root@localhost
    ③ DocumentRoot : ′/var/www/html′
    ④ ServerRoot : ′/etc/httpd′

    [20250223_31]
    Linux 시스템에서 데몬(Daemon)에 관한 설명 중 옳지 않은 것은?
    ① 백그라운드(Background)로 실행된다.
    ② ′ps afx′ 명령어를 실행시켜 보면 데몬 프로그램의 활동을 확인할 수 있다.
    ③ 시스템 서비스를 지원하는 프로세스이다.
    ④ 시스템 부팅 때만 시작될 수 있다.

    [20250223_32]
    Linux에서 ′manager′라는 파일을, 파일의 소유자가 아닌 사람도 볼 수는 있지만 수정을 못하도록 하는 명령어는?
    ① chmod 777 manager
    ② chmod 666 manager
    ③ chmod 646 manager
    ④ chmod 644 manager

    [20250223_33]
    Linux에서 사용자가 현재 작업 중인 디렉터리의 경로를 절대경로 방식으로 보여주는 명령어는?
    ① cd
    ② man
    ③ pwd
    ④ cron

    [20250223_34]
    Linux에서 사용자가 현재 작업 중인 디렉터리의 경로를 절대경로 방식으로 보여주는 명령어는?
    user1:x:500:500::/home/user1:/bin/bash
    ① 사용자 계정의 ID는 ′user1′ 이다.
    ② 패스워드는 ′x′ 이다.
    ③ 사용자의 UID와 GID는 500번이다.
    ④ 사용자의 기본 Shell은 ′/bin/bash′ 이다.

    [20250223_37]
    Linux에서 사용자가 현재 작업 중인 디렉터리의 경로를 절대경로 방식으로 보여주는 명령어는?
    user1:x:500:500::/home/user1:/bin/bash
    ① 사용자 계정의 ID는 ′user1′ 이다.
    ② 패스워드는 ′x′ 이다.
    ③ 사용자의 UID와 GID는 500번이다.
    ④ 사용자의 기본 Shell은 ′/bin/bash′ 이다.

    [20250223_37]
    네트워크관리사 Kim 사원이 Linux 서버(하드웨어)의 HDD 증설을 위해 서버를 종료하기로 하였다. 이에 Linux 서버를 종료하기 위한 명령어가 아닌 것은?
    ① shutdown –h now
    ② poweroff
    ③ init 6
    ④ halt

    [20250223_39]
    Linux에서 열려있는 port 정보를 확인하는 명령어로 옳은 것은?
    ① ps
    ② pstree
    ③ getenforce
    ④ netstat
    [20250223_39]
    Linux Apache 웹 서버에서 사용자가 POST Request 메시지를 전송 시 일정 크기 이상 전송하지 못하도록 ′httpd.conf′ 파일에서 설정하는 지시자로 옳은 것은?
    ① KeepRequestSize
    ② LimitRequestBody
    ③ RestrictBodyRequest
    ④ PostRequestSize

    [20250223_39]
    Linux 시스템에서 사용자에게 할당되어 있는 디렉터리로, 사용자가 임의로 사용할 수 있는 디렉터리 영역은?
    ① Root Directory
    ② Home Directory
    ③ Temporary Directory
    ④ Public Directory


    4일차
    리눅스 접속 : ssh network.izerone.co.kr
    서버 운영
    sudo nano /etc/netplan/50-cloud-init.yaml
    dhcp4:yes #addresses: ctrl+x > shift+y
    sudo netplan apply
    ip addr
    10.0.2.15
    nano /etc/resolv.conf
    168.126.63.1
    sudo apt -y update
    sudo apt -y upgrade
    su
    password
    sudo apt -y install lamp-server^
    sudo apt -y install php8.3-fpm
    sudo a2enmod proxy_fcgi setenvif
    sudo a2enconf php8.3-fpm
    sudo systemctl restart php8.3-fpm apache2
    FTP연결하기
    외부 ---> 공유기(공인IP) ---> NAT(192.168.219.1 / 포트포워딩) --> 리눅스서버
    번호 이름 IP 도메인 상태
    0 이성원 125.242.95.11 도메인 운영중
    1 옥설우 39.114.136.251 https://blog.srain.me/ 성공
    2 김영신 112.173.227.167 도메인 운영중
    3 최태현 124.51.251.146 도메인
    4 최재민 211.37.87.60 도메인 성공
    5 정하욱 221.153.197.70 도메인
    6 전승찬 125.188.103.180 도메인 운영중


    5일차
    윈도우 설치 및 실습
    윈도우 설치 후 홈서버 구축 연습


    6일차
    윈도우 실습















    7일차
    윈도우 실습

    윈도우 클라이언트 다운받기