위 사이트에 접속해보면 구글에서 멀웨어 감지 경고를 해주지만 이를 무시하고 열면 rew.KAGHAAN.COM 사이트로 연결된다.
코드를 확인해보면 iframe으로 rew.KAGHAAN.COM이라는 악성사이트에 접속하도록 되어 있는 것을 확인할 수 있다.
위와 같이 rew.kaghaan.com IP 확인
rew.KAGHAAN.COM에 들어가보면 아무런 내용도 뜨지 않음
소스코드 보기를 누르면 위와 같이 자바스크립트 난독화가 된 내용을 확인할 수 있음
eval함수가 있는 것으로 보아 무언가 악성코드를 실행할 것임을 유추할 수 있음
따라서 이 문제를 정리해보면 피해자는 unwrappedphotos.com 사이트에 접속을 했고 악성코드 경고창이 떴음에도 불구하고 무시하고 접속함 -> 랜섬웨어가 다운로드 되었고, 이 랜섬웨어가 모든 파일을 암호화시킨 것이다.
자바스크립트
1. 네트워크 트래픽 분석에 자바스크립트가 필요한 이유
- 홈페이지를 통한 악성코드 유포 - 페이지 내부에 이상한 코드 삽입 : 피싱/파밍이 아닌 경우 : 브라우저 exploit 공격 등이 가능 -> 자바스크립트 난독화를 해결해야 정보 파악이 가능
2. 자바스크립트란?
- 객체 기반의 스크립트 프로그래밍 언어 - 주로 웹브라우저 내에서 사용 - 대부분의 프로그래밍 언어와 유사 - 라인 구분에 ‘;’ 사용 - html 내부 사용 시 -> <scirpt>내용</script>
3. 자바스크립트 동작 순서
-> <script> 발견
-> 렌더링 엔진 일시 중지
-> 자바스크립트 해석기 동작
-> 실시간 해석 실행
-> HTML인 경우 메모리에 저장
-> </script> 발견
-> 메모리에 저장된 HTML 코드를 렌더링 엔진에 전달 -> 자바스크립트 엔진 중지
-> 렌더링 엔진 재동작
4, 기초 문법
1) alert : 파라미터로 받은 문자열 팝업창 띄움 ex) <script>alert('Hello!');</script>
2) 문자열 - ‘ 또는 “를 사용하여 묶어서 나타냄 - 내부에 중복되는 따옴표 사용 시 \를 붙여주어야 함
\t
수평 탭
\n
즐바꿈
\‘
작은 따옴표
\“
큰 따옴표
\\
역슬래시
3) 변수 선언 - 따로 타입을 선언하지 않고 var로 선언 ex) 숫자 -> var a = 1 문자열 -> var b = “string” 배열 -> var c = [1,2,3,4,5] - 데이터 타입 확인 시 typeof() 함수 사용 ex) alert(typeof(a))
4) 배열 - 괄호([ , ])를 사용하여 배열로 묶음 - 배열에는 다양한 형태의 데이터 선언 가능 ex) 숫자, 문자열, 불린, 함수, 배열 등
5) 조건절 - ’a’ == ‘a’; -> True - ‘a’ == ‘abc’; -> False - 100 > 10; -> True - “ == false; -> True - “ == 0; -> True ※ 아무것도 없는 것은 0이나 False와 같다.
>=
좌변이 크거나 같다
<=
우변이 크거나 같다
>
좌변이 크다
<
우변이 크다
==
서로 같다
!=
서로 다르다
6) 논리 연산자 - ‘a’ == ‘a’ && 100 > 10;
!
논리 부정 연산자
&&
논리곱 연산자
||
논리합 연산자
7) replace() - 문자열 치환 함수 - 문자열 일부를 교체해줌
5. 자바스크립트 난독화(JavaScript Obfuscation)
1) 개념 - 자바스크립트 코드를 읽기 어렵게 하는 기법
2) 필요성 - 소스를 알아볼 수 없게 감춤 - 소스를 분석하기 힘들게 하여 분석시간 늦춤 -> 악성코드 배포 기간 연장
3) 난독화 기법 - JavaScript Compress : 불필요한 값을 삭제하여 압축시킴 - JavaScript Fuction Expression : 함수 사용하여 데이터의 크기를 늘리고 흐름 방해 - JavaScript Data Split : 코드를 나누어서 저장하고 마지막에 실행 - JavaScript Data Replace : 쓰레기 코드 삽입하고 나중에 모두 제거 - JavaScript Data Encoding : 인코딩하여 알아볼 수 없는 데이터로 바꿈
- 텔넷은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜(원격 제어 터미널)
- 프로토콜의 클라이언트 일부 기능이 추가된 소프트웨어
- 텔넷 클라이언트는 대부분의 유닉스 시스템에서 사용
- 최근 텔넷의 보안 문제로 사용률 감소 (SSH로 대체)
- 23번 포트를 주요 사용
2) 실습
2. FTP 프로토콜
1) 개요
- 파일 전송 프로토콜의 약자
- TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜
- 응용 계층에 속함
- 최초의 FTP 클라이언트 애플리케이션들은 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 CUI 프로그램으로 현재 대부분의 윈도우, 유닉스, 리눅스 운영 체제에 기본 포함
- 그 뒤로 수많은 FTP 클라이언트 및 오토메이션 유틸리티들이 데스크톱, 서버, 모바일 장치, 하드웨어용으로 개발되고 있으며, FTP는 웹 페이지 편집기와 같은 생산성 응용 프로그램들에 통합
명령/데이터 전송 연결
명령 연결
- 서버 21번 포트
- 명령을 위한 연결 생성 후 여기를 통해 클라이언트에서 지시하는 명령어 전달
데이터 전송용 연결
- 실제 파일 전송은 필요할 때 새로운 연결
능동/수동 모드
능동 모드
- 20번 포트에서 클라이언트가 지정한 지점으로 데이터 연결
- 클라이언트가 방화벽, NAT 등을 사용하는 환경일 때 동작 X
수동 모드
- 클라이언트가 서버의 지정한 포트로 연결
- 보통 1023보다 큰 포트 사용
2) 실습
3. ARP/ICMP 프로토콜
1) 개요
① ARP(주소 결정 프로토콜)
- 네트워크 상에서 ip 주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜
- ARP 통신 방식
: 호스트 A가 호스트 B에게 IP 패킷 전송
: ARP 프로토콜 사용
: 호스트 B는 자신의 IP 주소가 목적지에 있는 ARP 패킷 수신
: 자신의 물리 주소를 A에게 응답
- ARP Table
: 각 IP 호스트의 ARP 캐시라 불리는 메모리에 테이블 형태로 저장
: 패킷을 전송할 때 다시 사용
- ARP와 반대로 IP 호스트가 자신의 물리 네트워크 주소는 알지만 IP 주소는 모르는 경우 서버로부터 IP 주소를 요청하기 위해 RARP를 사용
② ICMP(인터넷 제어 메시지 프로토콜)
- ICMP 필요성
: IP는 최선형 전달 서비스만 지원하기 때문에 IP 패킷이 전송되는 목적지에 전달되지 못함
: 전달되더라도 원하는 서비스 포트가 존재하지 않는 경우가 존재하지 않는 경우도 발생
: 오류에 대한 보고 기능과 네트워크 상태 진단 기능을 통해 IP를 보조하는 기능을 수행
: ICMP는 IP로 캡슐화되며 IP 헤더의 프로토콜 필드값을 1로 설정하여 ICMP 메시지임을 나타냄
ICMP 포맷
① 메시지 타입 필드 : ICMP 메시지 종류를 기술
② 코드 필드 : 메시지 타입에 따라 세분화가 필요할 때 사용
③ 체크섬 필드 : ICMP메시지에 대해 체크섬을 계산한 값이 삽입
2) 실습
4. HTTP/DNS 프로토콜
1) 개요
① HTTP
- HTTP는 WWW 상에서 정보를 주고받을 수 있는 프로토콜
- 주로 HTML 문서를 주고받는 데 쓰임
- HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
- 전달되는 자료는 http:로 시작하는 URL로 조회
요청 메소드
설명
GET
URL에 해당하는 자료의 전송 요청
HEAD
GET과 같은 요청이지만 자료에 대한 정보만을 받음
POST
서버가 처리할 수 있는 자료 전송
PUT
해당 URL에 자료를 저장
DELETE
해당 URL의 자료를 삭제
TRACE
이전에 요청한 내용을 들을 것을 요청
OPTIONS
서버가 특정 URL에 대해 어떠한 HTTP Method를 지원하는지 확인
CONNECT
프록시가 사용하는 요청
PATCH
리소스에 대한 부분적인 수정을 적용
② DNS(도메인 네임 시스템)
- 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행
- 특정 컴퓨터의 주소를 찾기 위해 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호로 변환
- IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템
- 전화번호부와 비슷한 기능
2) 실습
5. SMB 프로토콜
1) 개요
- 도스나 윈도우에서 파일이나 디렉터리 및 주변 장치들을 공유하는데 사용되는 메시지 형식 - NetBIOS는 SMB 형식에 기반을 두고 있으며, 많은 네트워크 제품들도 SMB를 사용 (랜매니저, 윈도우 포 워크그룹(Windows for Workgroups), 윈도우 NT, 그리고 랜 서버(Lan Server) 등) - 서로 다른 운영체제 사이에 파일을 공유할 수 있도록 하기 위해 SMB를 사용 - SMB는 대부분 마이크로소프트 윈도우를 실행하고 있는 컴퓨터에서 이용 - 윈도우 2003, win7, vista 이상
[네트워크 분석 도구]
1. 시큐리티 오니언 - 침입 탐지, 네트워크 보안 모니터링 및 로그 관리를 위한 Linux 배포판 - Ubuntu를 기반 - Snort, Suricata, Bro, OSSEC, Sguil, Squert, ELSA, Xplico, NetworkMiner 및 기타 여러 보안 도구 포함 - 사용하기 쉬운 설치 마법사를 사용하면 몇 분 안에 기업의 분산 센서 군 구축
2. wireshark - 세계에서 가장 널리 쓰이는 네트워크 분석 프로그램 - 네트워크상에서 캡처한 데이터에 대한 네트워크/상위 레이어 프로토콜의 정보를 제공 - 패킷을 캡처하기 위해 pcap 네트워크 라이브러리를 사용 - 장점 : 쉬운 설치, GUI를 이용한 간단한 사용법, 다양한 기능
3. xplico - 목표 : 포함된 응용 프로그램 데이터를 인터넷 트래픽 캡처에서 추출 - pcap 파일에서 각 전자 메일, 모든 HTTP 내용, 각 VoIP 호출, FTP, TFTP 등을 추출 - 오픈 소스 네트워크 포렌식 분석 도구 - 지원되는 프로토콜 : HTTP, SIP, IMAP, POP, SMTP, TCP, UDP, IPv6 등 - 각 애플리케이션 프로토콜에 대한 PIPI - SQLite 데이터베이스 또는 MySQL 데이터베이스 및 / 또는 파일에 데이터 및 정보 출력 - 재구성한 각 데이터에는 플로우를 고유하게 식별하는 XML 파일과 재구성된 데이터가 포함된 pcap 연결 - 외부 DNS 서버가 아닌 입력 파일에 포함된 DNS 패키지에서 역 DNS 조회 - 데이터 입력 또는 파일 입수 수에 제한 X - 각 Xplico 구성 요소는 모듈 (모듈화) - 가장 적절하고 유용하게 추출된 데이터를 구성하는 디스패처를 쉽게 생성할 수 있는 기능
4. networkminer - Windows 용 Network Forensic Analysis Tool (NFAT) - Linux / Mac OS X / FreeBSD에서도 호환 - 운영 체제, 세션, 호스트 이름, 열린 포트 등을 검색하기 위해 수동 네트워크 스니퍼/패킷 캡처 도구로 사용 - PCAP 파일에서 전송 된 파일 및 인증서를 다시 생성/재구성 - 직관적인 사용자 인터페이스에서 추출된 가공하여 고급 네트워크 트래픽 분석 (NTA)을 쉽게 수행 - YouTube와 같은 웹 사이트에서 네트워크를 통해 스트리밍되는 미디어 파일(예 : 오디오 또는 비디오 파일) 을 추출하고 저장하는 데 사용 - 파일 추출을 위해 지원되는 프로토콜 : FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3 및 IMAP
5. captipper - Python으로 제작된 악성 트래픽 분석 도구 - 디지털 포렌식 분석을 하기 위한 기본 기능을 제공 : 트래픽 내에서 파일 추출 : 트래픽 흐름 분석 : 패킷 헤더, 내용 분석 : 헥사 뷰어 : 기타 기능 제공 - 패킷 캡쳐 파일 흐름 재구성 기능 제공 : log 명령으로 페이지 탐색 모니터링 가능 - 통신을 오브젝트 단위로 구별하여 분석 기능 제공 - 분석 보고서 생성 기능 제공(--report 옵션)
6. IDS 장비 ① 스구일(Sguil) - 네트워크 보안 모니터링 및 탐지 이벤트 분석 도구 - 일반 GUI 응용 프로그램 - TCL/TK 를 지원하는 모든 운영 체제에서 실행 가능 - Linux, MacOS, Window 등 ② Quick Query - ST / Src IP / Sport / Dst IP / Dport 값을 기준으로 데이터 베이스 결과를 출력 - 사용 방법 : 마우스 오른쪽 클릭 후 사용 - ST 필드는 카테고리를 기준으로 데이터를 검색 - Src IP, Dst IP, Sport, Dport는 해당 값들을 기준으로 데이터를 검색 ③ 스노트(Snort) - 스니퍼 : 네트워크 패킷 수집 - 패킷 디코더 : 전처리기와 탐지 엔진이 파싱 할 수 있도록 정규화 - 전처리기 : 특정 행위가 발견된 패킷을 탐지 엔진으로 전송 - 탐지엔진 : 전달받은 패킷을 스노트 규칙에 매칭되는 지 확인 - 경고/로깅 : 스노트 규칙에 매칭된 경우 경고 출력 및 기록
7. 바이러스 토탈 - 대표 온라인 분석 사이트 - 기존에 동일한 샘플코드들이 존재했는지 빠르게 확인 - 하루에도 수많은 악성코드가 나타나는 위협에 빠르게 대응 - swf나 exe등의 다양한 악성코드 분석 시 주로 이용 - 다양한 기능 : 파일 전송 및 검색 : 이미 제출된 파일 재검색 : 파일 검사 보고서 가져오기 : URL 보내기 및 스캔 : URL 스캔 리포트 가져오기 : IP 주소 보고서 검색 : 도메인 보고서 검색 : 파일 및 URL에 대한 의견을 달기 : 공용 API와 상호 작용하는 스크립트