악성코드 자동분석관리 시스템 with telegram-cli, pytg

Posted by nopsled
2014.12.09 10:39 프로그래밍

악성코드 자동분석과 텔레그램 cli를 이용하여 virustotal 및 악성코드 스캐닝 결과를 텔레그램으로 보내는 역할을 하려고 한다.


우분투 환경에서 텔레그램 cli를 이용하여 하려했는데 자꾸 오류가떠서 진행이 안됬다..


구글링을 계속 시도한 결과.. 다음과 같은 명령어를 찾아서 깃에서 크론할 수 있었다.

(텔레그램 CLI가 IPC로 lua스크립트랑 통신이 가능하다고 하여서 더 찾아보니 pytg라고 해서 python과도 IPC통신을 지원하나보다. 그래서 pytg또한 인스톨 방법을 설명한다.)


telegram-cli & lua script

 # sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev

각종 라이브러리를 설치한다.


 # git clone --recursive https://github.com/vysheng/tg.git && cd tg

--recursive 옵션이 빠져서 설치에 어려움이 있었던 점하나 떄문에 configure는 됬지만 make가 안됬던 점..


 # ./configure & make 

이제 configure와 make를 이용하여 바이너리를 생성한다.


 # telegram-cli -k ../server.pub

추가로 server.pub 키를 -k 파라미터에 줘야하는데 bin디렉토리가 아니라 tg디렉토리에 있으므로 위와 같은 명령어를 사용하였다.


telegram-cli는 IPC로 통신하기 때문에 -s 옵션을 줘서 lua 스크립트로 수신이 가능하고, -p를 사용하면 node.js로 송신이 가능하다고한다. 




telegram -cli & python script

 # sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev 

마찬가지로 각종 라이브러리를 설치한다.


 # sudo pip install future

 # git clone https://bitbucket.org/luckydonald/pytg2.git && cd pytg2 && sudo python setup.py install

future를 인스톨하고 pytg를 클론한다.


 # git clone https://bitbucket.org/luckydonald/tg-for-pytg2.git && cd tg-for-pytg2

버전 패치라나.. 뭐라나.. 다시 한번더 설치해준다.


# ./configure && make

# ./configure --disable-liblua && make

만약 위 명령어가 에러뜬다면 두번째 줄 명령어를 실행한다. (전 에러없이 잘됬었으므로.. 첫번째를 사용함.)



참고로 php에서 system명령을 사용해서 telegram-cli를 실행함과 동시에 메시지를 보내지지가 않는다.. 이유는 nobody권한으로 실행되기 때문에..


그래서 /tmp 경로에 바이너리를 드랍해놨다.(telegram-cli, server.pub)



#!/usr/bin/python

# -- coding: UTF-8  --

import os, cgi

form = cgi.FieldStorage()

cmd = form['cmd'].value

peer = form['peer'].value

msg = form['msg'].value


print 'Content-type:text/html\n'

allowList = ['상명']

limitWords = ['passwd', '.py', 'mysql', 'root', 'php', 'html']

if peer in allowList:

    # check bad parameter

    for i in range(0, len(limitWords)):

        if msg.find(limitWords[i]) == -1:

            badParameter = 0

        else:

            badParameter = 1

            break

    if badParameter is 0:

        os.system('echo -e \'contact_list\n' + cmd + ' ' + peer + ' ' + msg +'\nsafe_quit\n\' | /tmp/telegram-cli -k /tmp/server.pub -W > /tmp/k.txt')

        print 'Sucessfully sending msessage.'

    else:

        print 'Please msg parameter. :('

else:

    print '''

        Your name is not include allow list.<br>

        allowList = [\'상명\']

    '''

위 스크립트는 메시지를 보내기 위한 스크립트로써 cgi-bin 폴더에 있어야함.




#!/usr/bin/python

import os

from BaseHTTPServer import HTTPServer

from CGIHTTPServer import CGIHTTPRequestHandler


if __name__ == '__main__':

        serv = HTTPServer(("", 8888), CGIHTTPRequestHandler)

        serv.serve_forever() 

그 뒤에는 python cgi서버를 열어서 8888번 포트로 서버운영 및 메시지를 보냈다.



-- 프로젝트 종료.

이 댓글을 비밀 댓글로