스프링(Spring) ?

- 자바 플랫폼을 위한 오픈소스 애플리케이션 "프레임워크" 이다.

  동적인 웹 사이트 개발을 위한 여러가지 서비스를 제공하며 엔터프라이즈

  애플리케이션을 만들때 모든 기능을 종합적으로 제공하는 경량화된 솔루션

 

자바 플랫폼 , 스탠더드 에디션 (Java SE) = 웹 프로그래밍 용

- 자바를 이용한 서버측 개발을 위한 플랫폼이다.

  Web 프로그래밍 및 어플리케이션을 만들 때 쓰입니다.

  즉, 웹 페이지를 사용하는 php 작성을 할 때 java Script를 사용 하듯이

  이해 하면 됨

 

자바 플랫폼 , 엔터프라이즈 에디션 (Java EE) = 서버 자체 개발용

- Java SE가 웹 프로그래밍을 의미한다면 엔터프라이즈는 톰켓 같은

  서버를 구동 시키게 해주며, 톰켓을 java EE로 만들어낸 서버이다.

  즉 서버를 구동시키기 위해선 기업용에서 주로 사용한다.

 

웹 개발자가 SE를 쓰는건 서버에 올릴 웹 어플리케이션을 만들기 때문이지

서버 자체를 만드는것은 아니기 때문에 SE를 사용하는 것

- SE : 어플리케이션 기반 개발

- EE : 서버 자체 (TomCat 등) 개발

 

톰캣 (TomCat) ?

- Apachesoftware 재단에서 만든 Java Servlet & JSP 기술 구현을 위한 Open Source

- WAS (Web Application Server)에 속함

 

Docker ? 

Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있습니다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있습니다.

프레임워크란 ?

- 개발의 틀을 잡아주는 기본 개념 구조 =  "뼈대" 역할 이라고 생각하면 됨.

  그리고  뼈대 위에 프로그래머가 코드를 작성하여 Application을 완성시켜야 함

  그렇다고 단순한 도구,함수 집합체인 라이브러리와는 다른 의미를 가지고 있음.

 

라이브러리란 ?

- 단순 활용이 가능한 도구,함수들의 집합체

  개발자들이라면 반드시 사용할 수 밖에 없는 기능

  프레임워크가 뼈대라면, 뼈대 위의 라이브러리를 사용하는 구조

 


 

 

 

블로그 이미지

_B_G_

,



dport - 목적지가 80포트 접근 탐지

ports - 8000 리다이렉트 시킬 포트번호트



iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d 192.168.0.1(웹서버 아이피) -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -d 192.168.0.1(웹서버 아이피) -p tcp --dport 80 -j REDIRECT --to-ports 8080


Cuckoo SandBox Web 서버 ON 시키는법


$ cuckoo web runserver 192.168.0.1(웹서버 아이피):8080

블로그 이미지

_B_G_

,

서버기준 amd64 cpu


You can download the libpng12-0 package from here:

서버가 amd64여서 다운로드 설치

링크 접속 -> Asia 카테고리 -> kr.archive.ubuntu.com/ubuntu 클릭하여 다운로드 임

하였음

그외에 다른 링크로 다운로드 하여도 상관은 없는걸로 보임

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

You can download the libvpx3 package from here:

https://packages.ubuntu.com/xenial/amd64/libvpx3/download

블로그 이미지

_B_G_

,

(1) 서비스 설치 - SC 명령어

sc create abc binPath= "%systemroot%\system32\svchost.exe -k abc" type= "share" DisplayName= "abc"

abc 부분은 서비스 이름을 의미함.
니가 새로운 서비스를 설치할때 니가 임의로 이름을 정하면됨.


(2) 서비스 설치가 완료되면

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\abc

레지스터리 경로에 새로 추가된 서비스에 대한 정보를 볼수 있음.
처음 설치하면 서브 키로 DLL Services 니깐 해당 키와 DLL 경로를 추가해줘야함.

서브키 이름 : Parameters
[키 이름] ServiceDll  [데이터] - DLL 경로

[종류] 확장 가능한 문자열


(3) svchost가 해당 서비스를 자신이 실행해야 하는 서비스인지 추가해줘야함.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost

이 경로가 svchost의 경로임 여기에 키를 추가해주면됨


[키 이름] - abc(서비스 이름)  [데이터] - abc(서비스 이름)

[종류] 다중 문자열
그러면 DLL 기반의 서비스 설치가 완료됨.


실행 명령어
net start 서비스이름

'침해사고 & 악성코드 > 분석 도구' 카테고리의 다른 글

Malzilla 1.2.0  (0) 2018.07.24
Browsing History View  (0) 2018.07.24
Uboat Rat 악성코드 분석 보고서  (0) 2017.12.06
기초 정적 분석  (0) 2017.07.24
기초 동적 분석  (0) 2017.07.24
블로그 이미지

_B_G_

,

목차

  • 개요

감염 경로

감염 증상

  • 동적 분석

UnPacking

가상 환경 (Virtual Machine) 탐지 코드 패치 우회

Uboat Rat 악성 행위 분석

  • 대응 방안

 


 

개요

UBoat Rat은 2017년 5월에 발견된 악성코드 이며, 악성 파일의 이름은 "2017년 연봉 인상 문의 사항 관련 피드백 조사.exe"라는 형태로 한국어를 사용하여 공격 대상을 한국으로 두어 배포 되어진걸로 보인다. 해당 악성 파일은 VMWare, VirtualBox 등 가상화 소프트웨어를 탐지하여 실행하지 않도록 하는 조건으로 제작 되었다.

 

[그림] https://researchcenter.paloaltonetworks.com/2017/11/unit42-uboatrat-navigates-east-asia/]

 

감염 경로

1. 공격자가 메일이나 웹사이트에 배포하여 상대방이 파일을 열람하도록 유도

2. 사용자가 실제론 EXE 실행 파일이지만 엑셀 모양의 아이콘으로 인식하여 아무런

   경계 없이 실행

3. 실행이 된 악성 파일은 재부팅 후에도 악성 파일이 작동을 할 수 있도록

   레지스트리 변조 및 원본 악성 파일 다른 폴더로 복사 후 숨김 명령 실행

4. 감염 된 컴퓨터는 지속적으로 실행 된 악성 파일에 의해 공격자 서버(C&C)랑 통신

   할 수 있도록 연결

 

*C&C : 외부에서 감염 된 컴퓨터로 통신 제어를 하기 위해 만들어둔 악성 서버

 

감염 증상

감염 증상은 컴퓨터 사용하기에는 아무런 이상 없이 사용이 가능하며, 악성 코드는  백그라운드(Background)에서 활동 한다. 그리고 C:\ProgramData\ 폴더에 .exe , ddd.bat 파일이 생성 되어 있으며, 프로세스 관리자 작업 창에는 특정 프로세스.exe가 종료 되었다 실행되었다 반복적으로 움직이는 행위가 보임

 


 

동적 분석

UnPacking

[분석 대상 악성 파일]

 

- 패킹 확인 결과 UPX 3.91로 패킹이 되어 있음

 

- UPX로 패킹 된 어셈블리어를 추적하여 OEP (Original Entry Point) 찾은 후 OEP

  구간에서 파일 DUMP

 

- 패킹이 해제 된 DUMP 파일을 실행 가능하도록 기존의 썼던 API들을 재정리

 


 

가상 환경 (Virtual Machine) 탐지 코드 패치 우회 

- UnPacking 된 파일을 가상환경(Virtual Machine)에서 실행하게 되면 

  메시지 박스가 나옴

[가상 환경 (Virtual Machine) 탐지 실행 중지]

- 해당 구간은 가상 환경 (Virtual Machine) 탐지를 하는 알고리즘 구간

[가상 환경 탐지 함수 내부]

- 가상 환경 (Virtual Machine) 탐지 CALL 부분 Code Bypass

 

Code Bypass 이 후 부터 가상 환경 (Virutal Machine) 탐지를 못 하게 된다.

 


 

Uboat Rat 악성 행위 분석 

- GetModuleFileNameW 함수를 사용하여 현재 악성 파일 실행 경로를 불러온다.

 

- 실행 경로를 이용하여 악성 파일을 CopyFileW 함수를 사용한 후

   C:\Programdata\.exe 라는 이름으로 복사

 

- 원본 악성 코드 파일이 .exe로 이동하는 동시에 Programdata 폴더에 init.bat라는

  윈도우 스크립트 실행 파일 생성

 

- init.bat 생성 후 자동으로 실행하도록 설계

 

- init.bat 실행 후 init.bat 자가삭제 및 ddd.bat라는 파일 생성 ddd.bat 기능은 원본

  악성코드를 보이지 않게 숨김으로 변조 해주는 역할이다.

 

 

- 정상 엑셀 확장자인 .xlsx 파일을 생성하여 실행 후 의심하지 못 하게 .xlsx 파일로  

  실행 된 것처럼 보여주게 한다.

 

- 해당 악성 파일은 악성 코드가 지속적으로 실행 되도록 레지스트리를 변조한다.

 

- 그 후 CMD 창을 이용하여 .exe 파일을 실행, 종료를 반복 하며, 공격자 CnC 서버랑 네트워크 통신을 하게 된다.

 


 

대응 방안

- Yara Rule을 사용하여 해당 레지스트리를 변조하는 시그니처를 추가하여 탐지하거나 공격자의 CnC 서버 통신 IP를 추적하여 해당 IP 탐지

 

- 해당 파일은 문서 아이콘까지 이용하여 문서 파일이라는 인식을 주고 아무 경계없이 실행 하도록 유도 하는 악성 파일이다. 이러한 파일을 실행하지 않도록 예방하기 위해선 사용자가 확장자 명을 인식 하여야 하고, 확장자 명이 보이지 않는다면 밑에 옵션 설정을 바꾸어 주어야 한다.

 

 


 

'침해사고 & 악성코드 > 분석 도구' 카테고리의 다른 글

Malzilla 1.2.0  (0) 2018.07.24
Browsing History View  (0) 2018.07.24
서비스 형태의 DLL 분석 방법  (0) 2018.02.13
기초 정적 분석  (0) 2017.07.24
기초 동적 분석  (0) 2017.07.24
블로그 이미지

_B_G_

,

목차

 

  • Yara 란?
  • 시그니처 - String 탐지
  • 시그니처 - Binary 탐지
  • 정규표현식
  • Yara Rule 수집
  • Python Source Code
  • Yara Rule 응용

Yara 란?

- Yara는 악성 파일을 시그니처 기반으로 판별 및 분류 할 수 있게 하는 툴

- Linux, Windows OS에서 모두 사용 가능

- 소스코드 컴파일, Python 모듈, 파일 실행 방식 등 다양한 방법으로 Yara 설치 및 실행 가능

 

 


시그니처 - String 탐지

 

스트링 탐지란?

Value 타이틀에 속해 있는 String들을 탐지하는 방법. 그리고 탐지 문자열을 대소문자 구별을 하고 싶다면 뒤에 "nocase"를 붙여 사용한다.

Condition의 역할은 결과값이 "참"인지 "거짓"인지 판별 해준다.

 

 

밑의 hex 정보에서 2바이트씩 사용되는 " U . P . X . 0 " UniCode인 스트링을

탐지할려면 위와 같이 대소문자를 구별하기 위해선 "nocase"를 붙였다면,

UniCode 탐지를 위해선 "WIDE ASCII"를 붙여 주면 된다.

 

이외의 방법으로는 탐지 문자열(UPX) 주변이 특수 문자일 경우에만 탐지하는

방법인데, 예를들어

123UPX123 , aaUPX1aa2 이와 같이 UPX를 탐지하게 되면 주변 문자열과 상관없이

특정 문자열을 탐지 하게 된다. 하지만 이럴경우 UUUPXXX 이런식으로 쓸모없는

문자열도 탐지가 될 수 있기 때문에  "....UPX....." , "__UPX_" , " UPX !" 이러한

주변 특수문자가 존재하는 경우의 문자열만 탐지하도록 한다

 

 


 

 

시그니처 - Binary 탐지

Binary 란?

파일 내부의 HEX값 탐지하는 기법으로 문자열 뿐만 아니라 16진수 값을 Rule에 적용 할 수 있으며, WILD CARDS를 사용하여 1바이트를 랜덤으로 대체 할 수 있다.

 

<일반 16진수 시그니처> 일반 HEX값을 시그니처 RULE 제작 한 경우

<WILD CARDS 사용한 시그니처> 1바이트 HEX값을 ?? (랜덤) 표시로 대체하여

저 공간에 00~FF 랜덤으로 대체하고 주변 HEX값들로 탐지를 하는 방법

 

WILD CARDS 뿐 아니라 JUMPS라는 기능도 사용 가능

JUMPS란 예를들어 그림에 나와있는 E2 와 8E 사이의 글자수를 임의로 정할 수

있음. [1-5] 란 뜻은 E2 와 8E 사이에 1-5바이트의 길이가 랜덤으로 들어갈 수 있다고

보면 됨

뜻그 외에도 HEX값 (8E|88) 중에서 OR 기능을 사용하여 둘 중 하나라도

해당되어도 탐지되는 방법이 있다. 

 


 

정규표현식이란?

정규표현식이란 특정한 규칙을 가진 문자열의 집합을 표현할 때 사용하는 '형식 언어' 이다. Yara에서는 특정 문자열이나 바이너리뿐만 아니라 정규표현식도 사용 할 수 있다.

 

정규 표현식으로 Yara Rule 적용 

/HTTPS:\S+\ - HTTPS: 로 시작하는 문자열을 탐지한 후 뒤의 문자열 까지 추출

/(\d{1,3}\.){3}\d{1,3}/ - 숫자를 출력 해주는 방법이지만 " . "을 붙여 IP 형태의

                                숫자만 출력하도록 정규표현식 작성

 

 


 

Yara Rule 수집

 

https://github.com/Yara-Rules/rules

github에서 Malware Yara Rule들을 제공하는 사이트가 존재하여 여기서

최신 Rule들이 올라오는지 확인하여 지속적으로 추가해주여야함

 

 


 

Python Source Code

Yara Rule을 좀 더 수월하게 사용하기 위하여 Python을 이용하여 하나의 파일 대상을 여러개의 Yara Rule들과 비교하는 소스코드를 작성

 

 

281개의 Rule들이 들어있는 "/root/Samplerules/rules/malware" 폴더

Rule 탐지를 할 때 Rule 이름도 같이 출력이 되기에 어떤 Rule에서 탐지되었는지 확인 가능 또 탐지가 되었다면 어떤 String , Binary 몇 번째 줄에서 탐지 되었는지 확인 가능

<탐지 결과>

 

 

 


 

Yara Rule 응용 - BackDoor 악성코드 C&C 서버 추출

 

BackDoor (악성파일) 동적으로 스트링 추출 후 Yara Rule 검사

정규표현식 Yara Rule 제작 - URL , IP 텍스트 출력

 

<Malware_URL_List>

<Malware_IP_List>

 

<파일 내부에서 실행되고 있는 스트링 중 IP 의심 출력>

 

와이어샤크 (WireShark)를 이용하여 TCP 통신 IP와 BackDoor(악성파일)에 속해 있는 IP 대조 C&C 서버 통신 확인 후 상세 분석

 


 

Yara Rule 응용 - HTTP : URL List들이 모여있는 .txt 파일 .csv 파일등을 URL 한줄 씩 불러와 해당 URL의 웹페이지 소스 또는 http://dd.com/aa.exe 실행파일 등의 PE 소스를 출력하여 수 많은 Yara Rule 시그니처를 비교하는 자동화 소스코드 제작

 

 

 

1. 실행파일.py 실행

2. .csv 또는 .txt 형태 안의 URL 한줄 출력

3. Yara Rule 폴더 안의 (개수 상관x) 모든 시그니처 검사

4. 결과 출력 - 탐지된 스트링 , Yara Rule 이름 출력 or 결과 .txt 형태로 저장

 

mws_mal_url_private_20170928_00.csv - 검사 대상 URL 리스트 파일

 

 

CMP_URL_CSV.py - 시작 실행 파일.py

Malware_URL_list.yar - 위의 csv 랑 비교하여 정규표현식으로 http~ URL 주소만

                              추출 

 

DetectionResult - 결과값을 .txt 형태로 저장

MalwareCMP_txt - 위의 URL주소의 소스를 txt형태로 저장

rules - 시그니처 룰

MalwareURL_YaraGoGo.py - MalwareCMP_txt 와 rules 비교하여

                                     DetectionResult 결과값 저장

 

파이썬 2.7 & Yara Rule 소스

다운로드 : 네이버 클라우드 - (Python 기반)Yara 시그니처 탐지 폴더 - Yara_Malware_URL.tar.gz

 

 

 

 

 

 

 

 

'리눅스 16.04 > Ubuntu 16.04 - Yara' 카테고리의 다른 글

Yara Rule 파일 해시값 탐지 방식  (0) 2018.07.17
Yara Rule에 대한 전체 설명  (0) 2018.07.17
Yara 설치 과정  (0) 2018.07.17
Yara 란?  (0) 2018.07.17
Yara 란? / 정규표현식  (0) 2017.07.21
블로그 이미지

_B_G_

,

기초 정적 분석 

 

  • 안티 바이러스(Virustotal ) 도구사용      

  • 악성코드 해시 사용  

  • 파일의 문자열(String)으로 파악 

  • PEView 통한 API 검사 

기초 정적 분석 도구 소개 

 

  • Strings.exe (문자열 검색 도구) 

 

악성 도메인으로 이어지는 URL이나 

아이피, 포트번호, 파일을 복사하거나  

삭제할려는 행위를 보이는 파일 경로 

스트링을 주로  

  

 

  • PEView (PE 구조 / 패킹 확인) 

 

  • IMAGE_NT_HEADERS -> 

IMAGE_FILE_HEADER -> 

Time Date Stamp : ???? / ?? / ?? 

파일 생성 날짜를 확인 가능 

  

  • VirusTotal 

 

여러가지의 백신 엔진에서의 해당파일이 

악성파일인지 정상적인 파일인지 확인  

엔진에서의 탐지된 결과를 합하여 보여줌 

URL검사,해시검사도 가능 

 

 

 

  • SECTION .rdata -> 

IMPORT Address Table -> 

해당 파일의 임포트 DLL들을 보여주고 

DLL 안에서 쓰이는 API 목록들을 상세히 보여줌 

  • IMAGE_SECTION_HEADER.txt -> 

Size of Raw Data (원래 데이터 크기) 보다  

Virtual Size (가상 크기)가 월등히 크다면  

가상 크기에 무언가가 덮어 씌운다는 걸 의심 (패킹)  

 

 

'침해사고 & 악성코드 > 분석 도구' 카테고리의 다른 글

Malzilla 1.2.0  (0) 2018.07.24
Browsing History View  (0) 2018.07.24
서비스 형태의 DLL 분석 방법  (0) 2018.02.13
Uboat Rat 악성코드 분석 보고서  (0) 2017.12.06
기초 동적 분석  (0) 2017.07.24
블로그 이미지

_B_G_

,

기초 동적 분석 

 

  • 프로그램을 직접 실행하며 분석 

  • 프로그램의 영향 쉽게 파악 

  • 네트워크 트래픽 분석 

  • 악성코드 실행 전,후 상태 조사

 

기초 동적 분석 도구

 

SysAnalyzer (필수)

 

실행시 모든 동적 분석 (레지스트리,Open Port,Running Processes) 등

눈에 한번에 볼 수 있게 정리되어 나와짐

 

 

프로세스 모니터 (Process Monitor) 

  • 특정 레지스트리, 파일 시스템, 프로세스 등 행위를 모니터링 

  • 단점 , 특정 GUI , 루트킷 탐지 불가 

 

프로세스 익스플로러 (Procexp)  

  • 프로세스[EPROCESS] 구조체에 관련된 많은 내용 확인 가능

  • TCP/IP , Strings (메모리상 복호화 된 문자열)등 여러가지를 보여줌

 

레지스트리 스냅샷 비교 (RegShot)

  • 두 레지스트리의 스냅샷을 찍고 비교하는 툴

  • 악성코드는 레지스트리 변조를 하여 자동실행을 함

 

와이어 샤크 (WireShark)

  • 네트워크 통신을 하는 모든 패킷 캡쳐

 

'침해사고 & 악성코드 > 분석 도구' 카테고리의 다른 글

Malzilla 1.2.0  (0) 2018.07.24
Browsing History View  (0) 2018.07.24
서비스 형태의 DLL 분석 방법  (0) 2018.02.13
Uboat Rat 악성코드 분석 보고서  (0) 2017.12.06
기초 정적 분석  (0) 2017.07.24
블로그 이미지

_B_G_

,