취약점(Vulnerabiliity) 점검도구
nessus/nikto
① 개념
- 특정 시스템, 네트워크 및 애플리케이션 등에 존재할 수 있는 보안 취약점을 사전에 점검해 보안을 강화하기 위한 도구
- 네트워크 보안 취약점 : 네트워크 장비나 기기들의 취약점부터 네트워크 구조에 대한 취약점
- 시스템 보안 취약점 : 시스템과 관련된 계정, 권한, 파일관리, 서비스 등의 취약점
- 웹 보안 취약점 : 웹브라우저,웹서버,웹프로그램 취약점
② 대표적인 취약점 점검 도구
- 네서스(nessus) : 미국 테너블사가 개발/배포하는 취약점 점검도구. 로컬 또는 원격지에서 다양한 방법을 통해 시스템,네트워크,웹애플리케이션 등의 알려진 취약점에 대한 점금을 수행하며 점검을 통해 취약점의 내용과 해결 방법을 상세하게 제공 (8834/tcp)
- 특징
- 클라이언트/서버 구조로 동작
- 서버에 nessus 데몬과 각종 취약점 점검 플러그인 등이 설치되며, 취약점을 점검하고 결과를 조회할 수 있는 인터페이스 제고
- 클라이언트(웹브라우저 등)는 nessus 데몬에 접속하여 대상 시스템에 대한 취약점 점검을 실시
- 사용이 자유롭고 플러그인 업데이트 등이 쉽다.
- 클라이언트는 GUI 형태로 취약점 점검 설정 및 결과를 확인할 수 있어 사용하기 쉽고 취약점이 공개되면 빠르게 취약점 DB가 업데이트 된다.
- HTML 등 여러 형태로 결과를 리포트
- 리눅스뿐만 아니라 유닉스,윈도우 등 모든 OS 및 장비에 대한 취약점 정보를 제공하고 해당 결과는 txt,html,pdf등 다양한 포맷으로 저장가능
- 클라이언트/서버 구조로 동작
- 특징
- 닉토(nikto) : 공개용 웹 취약점 점검도구. 웹 해킹에 대응하기 위해 웹서버나 웹 기반의 응용 프로그램 취약점을 점검할 수 있는 대표적인 프로그램이다. 닉토는 웹서버 설치 시 기본적으로 설치되는 파일과 웹서버의 종류와 버전 등을 스캔하며, 특히 방대한 DB를 이용해 취약한 CGI 파일을 스캔하는 기능애 매우 뛰어나다.
- 특징
- 방대한 취약점 DB를 통해 웹서버의 잘못된 설정, 기본적으로 설치되는 파일,스크립트의 존재유무, 안전하지 못한 파일이나 스크립트유무 등 웹서버에 대한 포괄적 점검 수행
- 취약점 결과는 HTML,TXT,CSV,PDF 등 다양한 형식으로 저장 가능.
- 특징
무결성 점검 도구
(tripwire)
① 개념
- 파일시스템 무결성 점검 : 파일시스템의 상태 추적 및 허가받지 않은 변경 여부를 주기적으로 점검해 의심스러운 변화 감지 시, 이를 검사하고 복구하는 과정
② 대표적인 무결성 점검 도구
- 트립와이어(Tripwire) : 유닉스/리눅스 환경에서 파일시스템 무결성을 점검하는 대표적인 도구(tw)
- 특징
- 오픈소스 버전과 상용버전이 존재
- (장점)무결한 상태에서 외부 공격자가 루트킷/백도어를 설치했을 때 이러한 사실을 알게 해주지만
- (단점)이미 설치된 루트킷/백도어에 대해선 알수 없다.
- 동작원리 : DB 생성 후 실행 시 새로 생성된 DB와 비교해 차이점 보고
- (데이터베이스 초기화)최초 설정파일에 등록된 파일 및 디렉터리의 해시값을 생성해 데이터베이스에 저장
- tripwire --init 실행 시, /var/lib/tripwire/호스트명.twd 데이터베이스 파일 생성
- 주기적으로 동작하면서(스케줄링) 기존 데이터베이스에 저장된 해시값과 현재 각 파일 및 디렉터리의 해시 비교
- tripwire --check
- 비교 결과값이 다를 경우 변경 내역을 출력해 관리자가 이를 확인
- Property(자산), Expected(무결값), Observed(검사값) 출력
- (데이터베이스 초기화)최초 설정파일에 등록된 파일 및 디렉터리의 해시값을 생성해 데이터베이스에 저장
- 특징
루트킷 점검 도구
chkrootkit
① 개념
- 루트킷(Rootkit): 지속적으로 자신의 존재가 탐지되지 않도록 숨기면서 관리자 권한의 획득과 백도어 등의 기능을 수행하는 코드와 프로그램의 집합
- 공격자는 자신의 공격 행위를 숨기기 위해 정상적인 프로그램을 변조하는 경우가 다수
- ex) ls 프로그램을 변조해 ls를 실행시켜도 공격자가 만든 실행파일이 보이지 않도록 함
- 주로 많이 변조되는 실행파일 (자주 쓰는 명령어) : ls, ps, netstat, login, top, dir, du, ifconfig 등
- 공격자는 자신의 공격 행위를 숨기기 위해 정상적인 프로그램을 변조하는 경우가 다수
- 루트킷이라는 이름은 공격자가 루트 권한을 획득하기 위한 공격에서 유래된 표현. 초기에는 주로 서버장비(Unix/Linux)에만 설치되어 telnet, ftp 등의 패킷을 스니핑해 대상 시스템의 아이디와 패스워드를 획득해 루트권한을 탈취하는 장비였음
② 대표적인 루트킷 점검 도구
- chkrootkit : 대표적인 루트킷 점검 도구
- 명령어
- chkrootkit : 옵션 없이 실행할 경우 모든 파일에 대한 루트킷 점검 결과를 보여줌
- chkrootkit -q : quiet모드로 변조/감염 파일만 보여줌
- 결과 메세지
- INFECTED : 해당 파일이 변조/감염 되었음
- not infected : 해당 파일이 변조/감염 되지 않았음
- not tested : 해당 파일의 변조/감염 여부를 체크하지 못했음
- not found : 해당 파일이 존재하지 않음
- 탐지원리
- /proc 파일시스템 : 유닉스/리눅스 커널이 메모리상에 사용하고 있는 모든 자원들에 대한 정보들을 파일형식으로 보관하는 파일시스템
- 물리적 디스크 영역이 아닌 메모리 영역에 존재하는 파일시스템으로 부팅시마다 새롭게 생성됨
- 커널이 관리하는 프로세스 등의 자원, 커널파라미터 등에 대한 상태정보를 파일명으로 보관
- 현재 실행중인 개별 프로세스의 PID를 의미하는 다수의 디렉터리 생성
- 주요 상태 정보
- /proc/<pid>/exe : 프로세스의 실행 파일명 및 경로를 확인할 수 있는 심볼릭 링크파일
- /proc/<pid>/cmdline : 프로세스를 실행한 명령어 및 전달인자 정보를 담고있는 파일. 프로세스가 실행된 방식을 정확하게 파악하는데 활용(ex. nc-lvp12345 : nc 명령어 실행 시 ,-lvp12345를 인수로 실행하였음)
- 원리
- 명령어 실행 결과와 /proc 디렉터리에 있는 프로세스 정보를 비교해 /proc 디렉터리에는 프로세스가 있지만 ps 실행 시 보이지 않는 프로세스를 히든 프로세스로 탐지
- 명령어를 실행한 결과와 /proc 디렉터리 내용을 비교하는 시차에 의해 오탐 발생 가능 -> 히든 프로세스로 탐지된 프로세스는 실제 확인이 필요.
- 탐지 과정
- 정상 ps 명령 실행시 동작중인 백도어 프로그램 프로세스 정보가 출력
- 루트킷 실행 후 변조된 ps 명령 실행 시 동작중인 백도어프로그램 프로세스 정보가 숨겨져 출력되지 않는다.
- ls - l /proc/<pid>/exe 명령어 실행해 실행중인 백도어를 탐지한다.
- ... /proc/<pid>/exe -> /root/rootkit_test/rootkit/binary/bdoor (deleted) 결과 출력
- 실행파일 경로 : /root/rootkit_test/rootkit/binary/bdoor
- (deleted)의 의미 : 실행파일이 실행 이후에 삭제되었음. 따라서 해당 실행파일경로에는 파일이 삭제되었음
- 일반적으로 공격자는 백도어 실행 후 실행팡리 흔적을 숨기기 위해 실행 후 삭제
- 실행파일이 삭제되어도 실행중인 상태라면 메모리상에 해당 실행파일이 남아있으므로 cp(copy) 명령을 통해 실행파일 복원 가능
- cp /proc/<pid>/exe /tmp/backdoor
- /proc 파일시스템 : 유닉스/리눅스 커널이 메모리상에 사용하고 있는 모든 자원들에 대한 정보들을 파일형식으로 보관하는 파일시스템
- 명령어
③ 루트킷 대응방법
- RPM(Redhat Package Manager) 명령어를 사용한 변조 파일 확인
- 패키지(package): 레드햇 계열 리눅스에서 윈도우의 setup 프로그램처럼 프로그램 설치를 손쉽게 하기 위해 만들 설치파일
- rpm : 패키지를 관리하는 명령어
- Uvh 패키지파일이름.rpm : 패키지 신규설치/업그레이드
- -qf 파일절대경로 : 해당 파일이 어느 패키지에 포함되어있는지 확인
- -V 패키지이름 : Verify를 의미. 해당 패키지를 통해 설치된 파일의 무결성검사
- 무결성 결과 항목 출력
- S: 파일크기 변경, M: 파일 퍼미션 변경, 5: MD5 체크섬 변경, T: 파일수정시간 변경
- U: 소유자 정보 변경, G: 소유 그룹 정보 변경, D: 장치정보 변경, L: 심볼릭 링크 정보 변경
- 무결성 결과 항목 출력
- strace명령을 사용한 변조된 파일 확인
- strace : 유닉스/리눅스 시스템에서 특정 프로그램의 시스템 콜과 시그널을 추적하는데 사용하는 디버깅 도구. 정상적인 프로그램과 변조된 프로그램의 시스템 콜을 비교해 변조 여부 확인
- strace -e trace=open ps | more : ps 프로그램에 대해 open 시스템 콜을 출력해 출력.
- ps 파일 실행 시, open되는 파일들 출력
- strace -e trace=open ps | more : ps 프로그램에 대해 open 시스템 콜을 출력해 출력.
- strace : 유닉스/리눅스 시스템에서 특정 프로그램의 시스템 콜과 시그널을 추적하는데 사용하는 디버깅 도구. 정상적인 프로그램과 변조된 프로그램의 시스템 콜을 비교해 변조 여부 확인
- 패키치 재설치
- 임시방편 : 변조/감염이 확인된 파일만 교체하는 것
- lsattr : 파일 속성 정보 확인.
- i 속성 : 설정되어있으면 파일 변경불가. -> 파일 삭제 못함
- a 속성 : 내용 추가만 허용. 삭제,변경 불가 (ex.로그)
- A 속성 : access time 변경 x (부하 줄임)
- chattr : 파일 속성 변경
- chattr -i 파일절대경로 : i 속성 없애
- chattr -[속성] : 속성 없애
- chattr +[속성] : 속성 추가
- rpm -Uvh --force 파일절대경로 : 강제로 패키지 신규 설치&업그레이드
- lsattr : 파일 속성 정보 확인.
- 최선의 방법 : 시스템을 다시 설치하는 것.
- 임시방편 : 변조/감염이 확인된 파일만 교체하는 것
'정보보안 > 침해사고 분석 및 대응' 카테고리의 다른 글
[침해사고분석] 유형별 침해사고 시나리오 1 (0) | 2024.11.19 |
---|---|
[보안장비 운영] 보안 솔루션/장비 종류 및 특징 (1) | 2024.11.19 |
[보안장비 운영] 침입차단시스템 (0) | 2024.11.18 |
[보안장비 운영] 침입탐지시스템 (1) | 2024.11.18 |