1. 개요
Client Honeypot 종류들 중에 이슈의 중심은 Thug라는 도구인데, 구글의 자바스크립트 엔진인 V8을 이용하여 Low Interaction Client Honeypot임에도 High Interaction에 가까워 지려고 꾸준히 노력하는 것과, 기능적 측면의 지속적인 릴리즈가 이유가 아닌가 싶다. 최근 새로나온 Yara 2.0에 발맞춰 Thug 또한 업데이트를 진행하였다.
Thug를 설치하는데 있어 가장 문제점은 당연히 핵심 엔진인 V8에서 파이썬화 시킨 PyV8이다. Yara 2.0으로 인해 thug가 릴리즈 된 이후 순조롭게 thug를 설치했으나, 시간이 지난후 포스팅하기 위해 새롭게 설치할 땐 에러 발생으로 인해 진행하지 못하였다. 아마 처음 설치 되었을 때의 rev 버전과 향후 포스팅 하기위해 테스트 할 때의 rev 버전이 달라져서 발생한 에러로 추측한다. 해당 에러는 Issue 255 : Compilation error로 -r572에서 발생하는 에러이며, 다행이 누군가에 의해 해당 이슈를 언급했고, 블로거 작성 기준 하루 전에 해당 문제에 대한 패치가 이루어 졌다. 현재는 -r573으로 패치를 진행 후 설치를 하면 관련 에러는 발생하지 않는다.
2. 설치
2.1. 환경
- Kali Linux (Debian 3.12.6)
2.2. 주요 모듈/패키지 설치 리스트
- Python - 파이썬으로 제작되어 기본적으로 Python이 설치되어 있어야 한다. 추가적으로 파이썬 모듈 레파지토리와 연결되는 python-pip와 원활한 환경을 위해 python-dev도 함께 설치한다.
- Google V8, PyV8 - V8은 구글에서 개발한 오픈소스 자바스크립트 엔진이다. Chrome에도 사용되고 있으며 Python 형태로도 구현되어 있다.
- Beautiful Soup 4 - Beautiful Soup는 파이썬 라이브러리로 구문 파서 기능을 가지고 있다. 주로 HTML과 XML 파일의 구문들을 파싱 할 수 있다.
- Html5lib - Html5lib는 HTML 구문 분석을 위한 파이썬 라이브러리이다.
- Jsbeautifier - JsBeautifier는 자바 스크립트 난독화를 해제하고 Syntax Highlighting 기능을 가지고 있다.
- Libemu, Pylibemu 0.2.4 or later - Libemu는 Shellcode Emulation으로 쉘코드를 탐지하는 라이브러리이다.
- Pefile - Pefile은 파이썬 모듈로 PE(Portable Executable)의 정보를 다룬다. PE 헤더 정보, 섹션 정보, 데이터 모두 액세스 할 수 있다.
- Chardet - Chardet은 다양한 인코딩을 탐지하는 파이썬 패키지이다.
- httplib2 0.7.4 or later - Http 클라이언트 라이브러리이다.
- Cssutils 0.9.9 or later - Cssutils는 CSS를 분석하고 구축할 수 있는 파이썬 패키지이다.
- Zope interface - 파이썬에서 “객체 인터페이스”의 구현을 위해 사용한다.
- Graphviz - Graphivz는 그래프 시각화 소프트웨어로 네트워크 다이어그램, 추상적인 그래프와 같이 구조적 정보를 표현하는 방법으로 사용된다.
- Pyparsing - Pyparsing은 클라이언트 코드의 파이썬 코드에서 직접 문법을 구성하기 위해 사용하는 클래스 라이브러리이다.
- Pydot - Graphviz와 함께 사용하는 그래프 시각화 모듈이다.
- Python-Magic - Python-Magic은 파일 형식을 식별하기 위한 파이썬 라이브러리이다.
- Yara 2.0, Yara-Python 2.0 - 많은 곳에서 사용되는 패턴 탐지 도구이다.
- Boost - Boost는 C++ 표준 라이브러리 모음이다.
2.3. Optional 설치 리스트
Thug를 실행하는데 문제 없지만, Thug가 부수적으로 지원을 해주는 도구이다.
- MongoDB (optional), PyMongo (optional) - MongoDB를 사용한다면 MongoDB 소프트웨어와 파이썬에서 지원하는 관련 라이브러리를 설치한다.
- RabbitMQ (optional) - RabbitMQ는 Messaging Queue로 응용프로그램을 위한 메시지 처리 라이브러리이다.
- Pika (optional) - RabbitMQ를 지원하는 파이썬 라이브러리이다.
2.4. Support 설치 리스트
- Pip - Easy_install의 향상된 기능으로 파이썬 패키지 인덱스를 보관하여 다양한 패키지들을 찾아 설치하고 관리해준다.
- Git - 소스코드 저장소를 관리해주는 도구로 Thug를 받기 위해 설치한다.
- libtool, byacc, flex, bison, automake - Yara 2.0과 limebu를 설치하기 앞서 설치하는 패키지들이다.
- libboost-python-dev libboost-system-dev libboost-thread-dev - PyV8을 설치하기 앞서 설치하는 패키지들이다.
2.5. 설치
2.5.1. 모듈/패키지/라이브러리 설치
$ apt-get install python-pip git python python-dev libboost-python-dev libboost-thread-dev libboost-system-dev python-magic libtool byacc flex bison automake
$ pip install beautifulsoup html5lib jsbeautifier pefile chardet httplib2 cssutils zope.interface graphviz pyparsing pydot pyv8
2.5.2. yara 2.0 설치 - 링크
$ apt-get install python-dev libtool byacc flex bison git automake
$ git clone https://github.com/plusvic/yara.git
$ cd yara
yara$ chmod +x build.sh
yara$ ./build.sh
yara/$ ./configure
yara/$ make
yara/$ make install
yara/$ cd yara-python
yara/yara-python$ python setup.py build
yara/yara-python$ python setup.py install
yara/yara-python$ ldconfig
yara/yara-python$ cd ..
2.5.3. libemu & pylibemu 설치 - 링크
$ apt-get install git automake libtool
$ git clone git://git.carnivore.it/libemu.git
$ cd libemu
libemu$ autoreconf -v -i
libemu$ ./configure --prefix=/opt/libemu
libemu$ make install
libemu$ git clone https://github.com/buffer/pylibemu
libemu$ cd pylibemu
libemu/pylibemu$ python setup.py build
libemu/pylibemu$ python setup.py install
libemu/pylibemu$ sh -c "echo /opt/libemu/lib > /etc/ld.so.conf.d/libemu.conf"
libemu/pylibemu$ ldconfig
2.5.4. thug 다운로드
$ git clone https://github.com/buffer/thug
3. 실행
thug.py는 ./thug/src 디렉터리 안에 있다.
thug/src$ python thug.py -h
Synopsis:
Thug: Pure Python honeyclient implementation
Usage:
python thug.py [ options ] url
Options:
-h, --help Display this help information
-V, --version Display Thug version
-u, --useragent= Select a user agent (see below for values, default: winxpie60)
-e, --events= Enable comma-separated specified DOM events handling
-w, --delay= Set a maximum setTimeout/setInterval delay value (in milliseconds)
-n, --logdir= Set the log output directory
-o, --output= Log to a specified file
-r, --referer= Specify a referer
-p, --proxy= Specify a proxy (see below for format and supported schemes)
-l, --local Analyze a locally saved page
-x, --local-nofetch Analyze a locally saved page and prevent remote content fetching
-v, --verbose Enable verbose mode
-d, --debug Enable debug mode
-q, --quiet Disable console logging
-m, --no-cache Disable local web cache
-a, --ast-debug Enable AST debug mode (requires debug mode)
-g, --http-debug Enable HTTP debug mode
-t, --threshold Maximum pages to fetch
-E, --extensive Extensive fetch of linked pages
-T, --timeout Set the analysis timeout (in seconds)
Plugins:
-A, --adobepdf= Specify the Adobe Acrobat Reader version (default: 9.1.0)
-P, --no-adobepdf Disable Adobe Acrobat Reader plugin
-S, --shockwave= Specify the Shockwave Flash version (default: 10.0.64.0)
-R, --no-shockwave Disable Shockwave Flash plugin
-J, --javaplugin= Specify the JavaPlugin version (default: 1.6.0.32)
-K, --no-javaplugin Disable Java plugin
Classifier:
-Q, --urlclassifier Specify a list of additional (comma separated) URL classifier rule files
-W, --jsclassifier Specify a list of additional (comma separated) JS classifier rule files
Proxy Format:
scheme://[username:password@]host:port (supported schemes: http, http2, socks4, socks5)
Available User-Agents:
winxpie60 Internet Explorer 6.0 (Windows XP)
winxpie61 Internet Explorer 6.1 (Windows XP)
winxpie70 Internet Explorer 7.0 (Windows XP)
winxpie80 Internet Explorer 8.0 (Windows XP)
winxpchrome20 Chrome 20.0.1132.47 (Windows XP)
winxpfirefox12 Firefox 12.0 (Windows XP)
winxpsafari5 Safari 5.1.7 (Windows XP)
win2kie60 Internet Explorer 6.0 (Windows 2000)
win2kie80 Internet Explorer 8.0 (Windows 2000)
win7ie80 Internet Explorer 8.0 (Windows 7)
win7ie90 Internet Explorer 9.0 (Windows 7)
win7chrome20 Chrome 20.0.1132.47 (Windows 7)
win7firefox3 Firefox 3.6.13 (Windows 7)
win7safari5 Safari 5.1.7 (Windows 7)
osx10safari5 Safari 5.1.1 (MacOS X 10.7.2)
osx10chrome19 Chrome 19.0.1084.54 (MacOS X 10.7.4)
galaxy2chrome18 Chrome 18.0.1025.166 (Samsung Galaxy S II, Android 4.0.3)
galaxy2chrome25 Chrome 25.0.1364.123 (Samsung Galaxy S II, Android 4.0.3)
galaxy2chrome29 Chrome 29.0.1547.59 (Samsung Galaxy S II, Android 4.1.2)
linuxchrome26 Chrome 26.0.1410.19 (Linux)
linuxchrome30 Chrome 30.0.1599.15 (Linux)
linuxfirefox19 Firefox 19.0 (Linux)
ipadsafari7 Safari 7.0 (iPad, iOS 7.0.4)
4. Error Report
해당 이슈는 Issue 182 : Location of static V8 library is wrong 에서 발생했던 이슈이다. PyV8 설치 중에 위와 같은 에러가 발생한다면 해결방법은 한번 더 PyV8을 컴파일 및 설치를 진행하면 된다.
thug를 통해 URL을 분석하다보면 위와 같은 에러가 발생하기도 한다. 일부 부분에서 발생하는 것으로 판단되며, chardet 모듈에서 유니코드 인식에 따른 에러로 판단된다. 관련 오류를 찾아보면 이곳에서 볼 수 있다.
'Information Security > OpenSource' 카테고리의 다른 글
YARA1.7 on Kali Linux with GLIBC Error Report (0) | 2014.02.08 |
---|---|
How to install phoneyc client honeypot (0) | 2014.01.31 |
How to install libemu & pylibemu on Kali Linux (2) | 2014.01.17 |
Yara Project 2.0 Release & How to install Yara 2.0 (0) | 2013.12.27 |
How to install thug.py Honeyclient on Kali linux (0) | 2013.09.03 |