본문 바로가기

정보보안/침해사고 분석 및 대응

[시스템 점검 도구] 상황별 점검도구

취약점(Vulnerabiliity) 점검도구
nessus/nikto

① 개념

  • 특정 시스템, 네트워크 및 애플리케이션 등에 존재할 수 있는 보안 취약점을 사전에 점검해 보안을 강화하기 위한 도구
    • 네트워크 보안 취약점 : 네트워크 장비나 기기들의 취약점부터 네트워크 구조에 대한 취약점
    • 시스템 보안 취약점 : 시스템과 관련된 계정, 권한, 파일관리, 서비스 등의 취약점
    • 웹 보안 취약점 : 웹브라우저,웹서버,웹프로그램 취약점

② 대표적인 취약점 점검 도구

  1. 네서스(nessus) : 미국 테너블사가 개발/배포하는 취약점 점검도구. 로컬 또는 원격지에서 다양한 방법을 통해 시스템,네트워크,웹애플리케이션 등의 알려진 취약점에 대한 점금을 수행하며 점검을 통해 취약점의 내용과 해결 방법을 상세하게 제공 (8834/tcp)
    • 특징
      1. 클라이언트/서버 구조로 동작
        • 서버에 nessus 데몬과 각종 취약점 점검 플러그인 등이 설치되며, 취약점을 점검하고 결과를 조회할 수 있는 인터페이스 제고
        • 클라이언트(웹브라우저 등)는 nessus 데몬에 접속하여 대상 시스템에 대한 취약점 점검을 실시
      2. 사용이 자유롭고 플러그인 업데이트 등이 쉽다.
        • 클라이언트는 GUI 형태로 취약점 점검 설정 및 결과를 확인할 수 있어 사용하기 쉽고 취약점이 공개되면 빠르게 취약점 DB가 업데이트 된다.
      3. HTML 등 여러 형태로 결과를 리포트
        • 리눅스뿐만 아니라 유닉스,윈도우 등 모든 OS 및 장비에 대한 취약점 정보를 제공하고 해당 결과는 txt,html,pdf등 다양한 포맷으로 저장가능
  2. 닉토(nikto) : 공개용 웹 취약점 점검도구. 웹 해킹에 대응하기 위해 웹서버나 웹 기반의 응용 프로그램 취약점을 점검할 수 있는 대표적인 프로그램이다. 닉토는 웹서버 설치 시 기본적으로 설치되는 파일과 웹서버의 종류와 버전 등을 스캔하며, 특히 방대한 DB를 이용해 취약한 CGI 파일을 스캔하는 기능애 매우 뛰어나다.
    • 특징
      1. 방대한 취약점 DB를 통해 웹서버의 잘못된 설정, 기본적으로 설치되는 파일,스크립트의 존재유무, 안전하지 못한 파일이나 스크립트유무 등 웹서버에 대한 포괄적 점검 수행
      2. 취약점 결과는 HTML,TXT,CSV,PDF 등 다양한 형식으로 저장 가능.

 

무결성 점검 도구
(tripwire)

① 개념

  • 파일시스템 무결성 점검 : 파일시스템의 상태 추적 및 허가받지 않은 변경 여부를 주기적으로 점검해 의심스러운 변화 감지 시, 이를 검사하고 복구하는 과정

 

② 대표적인 무결성 점검 도구

  • 트립와이어(Tripwire) : 유닉스/리눅스 환경에서 파일시스템 무결성을 점검하는 대표적인 도구(tw)
    • 특징
      • 오픈소스 버전과 상용버전이 존재 
      • (장점)무결한 상태에서 외부 공격자가 루트킷/백도어를 설치했을 때 이러한 사실을 알게 해주지만
      • (단점)이미 설치된 루트킷/백도어에 대해선 알수 없다.
    • 동작원리 : DB 생성 후 실행 시 새로 생성된 DB와 비교해 차이점 보고
      1. (데이터베이스 초기화)최초 설정파일에 등록된 파일 및 디렉터리의 해시값을 생성해 데이터베이스에 저장
        • tripwire --init 실행 시, /var/lib/tripwire/호스트명.twd 데이터베이스 파일 생성
      2. 주기적으로 동작하면서(스케줄링) 기존 데이터베이스에 저장된 해시값과 현재 각 파일 및 디렉터리의 해시 비교
        • tripwire --check
      3. 비교 결과값이 다를 경우 변경 내역을 출력해 관리자가 이를 확인
        • 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 디렉터리 내용을 비교하는 시차에 의해 오탐 발생 가능 -> 히든 프로세스로 탐지된 프로세스는 실제 확인이 필요.
        • 탐지 과정
          1. 정상 ps 명령 실행시 동작중인 백도어 프로그램 프로세스 정보가 출력
          2. 루트킷 실행 후 변조된 ps 명령 실행 시 동작중인 백도어프로그램 프로세스 정보가 숨겨져 출력되지 않는다.
          3. ls - l /proc/<pid>/exe 명령어 실행해 실행중인 백도어를 탐지한다.
            • ... /proc/<pid>/exe -> /root/rootkit_test/rootkit/binary/bdoor (deleted) 결과 출력
            • 실행파일 경로 : /root/rootkit_test/rootkit/binary/bdoor 
            • (deleted)의 의미 : 실행파일이 실행 이후에 삭제되었음. 따라서 해당 실행파일경로에는 파일이 삭제되었음
            • 일반적으로 공격자는 백도어 실행 후 실행팡리 흔적을 숨기기 위해 실행 후 삭제
          4. 실행파일이 삭제되어도 실행중인 상태라면 메모리상에 해당 실행파일이 남아있으므로 cp(copy) 명령을 통해 실행파일 복원 가능
            • cp /proc/<pid>/exe /tmp/backdoor

 

③ 루트킷 대응방법

  1. RPM(Redhat Package Manager) 명령어를 사용한 변조 파일 확인
    • 패키지(package): 레드햇 계열 리눅스에서 윈도우의 setup 프로그램처럼 프로그램 설치를 손쉽게 하기 위해 만들 설치파일
    • rpm : 패키지를 관리하는 명령어
      • Uvh 패키지파일이름.rpm : 패키지 신규설치/업그레이드 
      • -qf 파일절대경로 : 해당 파일이 어느 패키지에 포함되어있는지 확인 
      • -V 패키지이름 : Verify를 의미. 해당 패키지를 통해 설치된 파일의 무결성검사
        • 무결성 결과 항목 출력
          • S: 파일크기 변경, M: 파일 퍼미션 변경, 5: MD5 체크섬 변경, T: 파일수정시간 변경
          • U: 소유자 정보 변경, G: 소유 그룹 정보 변경, D: 장치정보 변경, L: 심볼릭 링크 정보 변경
  2. strace명령을 사용한 변조된 파일 확인
    • strace : 유닉스/리눅스 시스템에서 특정 프로그램의 시스템 콜과 시그널을 추적하는데 사용하는 디버깅 도구. 정상적인 프로그램과 변조된 프로그램의 시스템 콜을 비교해 변조 여부 확인
      • strace -e trace=open ps | more : ps 프로그램에 대해 open 시스템 콜을 출력해 출력.
        • ps 파일 실행 시, open되는 파일들 출력
  3. 패키치 재설치
    • 임시방편 : 변조/감염이 확인된 파일만 교체하는 것
      • lsattr : 파일 속성 정보 확인.
        • i 속성 : 설정되어있으면 파일 변경불가. -> 파일 삭제 못함
        • a 속성 : 내용 추가만 허용. 삭제,변경 불가 (ex.로그)
        • A 속성 : access time 변경 x (부하 줄임)
      • chattr : 파일 속성 변경 
        • chattr -i 파일절대경로 : i 속성 없애
        • chattr -[속성] : 속성 없애
        • chattr +[속성] : 속성 추가
      • rpm -Uvh --force 파일절대경로 : 강제로 패키지 신규 설치&업그레이드
    • 최선의 방법 : 시스템을 다시 설치하는 것.