client 분석
HalT
ntdll. PE
ntdll.RtlNtdllName+74A8
L "C:\\windows"
TermservGetWindowsDirectoryw라는 API를 호출하는것을 확인
ZwEnumerateValueKey+C
C:\ProgramData 에서 무언가를 함 regid ?? 확인해볼것
그후 자신을 다시 호출하고
bcrypt.dll << DLL을 로드함
>> 소켓 연결을 시도하는 python27\Scripts\build\client\out00-PYZ.pyz\soket
line 224 에서 응답 받지못하고 일시중지함
Traceback (most recent call last):
File "<string>", line 159, in <module>
File "<string>", line 150, in main
File "<string>", line 35, in __init__
File "C:\Python27\Scripts\build\client\out00-PYZ.pyz\socket", line 224, in meth
socket.error: [Errno 10060] 연결된 구성원으로부터 응답이 없어 연결하지 못
계속 진행하면 bcrypt.dll 이 연결을 시도하지만 실패하면서 createing child process! 가 나오게됨
"1.2.7"??????????
rdi:"C:\\Users\\PC11\\AppData\\Local\\Temp\\_MEI13802"
rdi값에 Temp의 무언가를 불러옴
MEIPASS2
kiUserExceptionDispatcher
b_hashlib.pyd
Crypto.util._counter.pyd
bwin32console.pyd
Crypto.util.strxor.pyd
Crypto.Cipher._AES.pyd
Crypto.Random.OSRNG.winrandom.pyd
pyexpat.pyd
win32crypt.pyd
Crypto.Hash._SHA256.pyd
pyHook
값들을 메모리에 불러온후에 temp경로에 생성하는것이었음
C:\Users\PC11\AppData\Local\Temp\_MEI102322
해당 경로에서 include된 파일 안에서 컴파일러와 버전을 찾음
This is a manually maintained version used for the Watcom,
Borland and Microsoft Visual C++ compilers. It is a
standard part of the Python distribution.
/* set the COMPILER */
#ifdef MS_WIN64
#if defined(_M_IA64)
#define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)")
#define MS_WINI64
#elif defined(_M_X64) || defined(_M_AMD64)
#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)")
#define MS_WINX64
#else
#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)")
#endif
#endif /* MS_WIN64 */
/* set the version macros for the windows headers */
#ifdef MS_WINX64
/* 64 bit only runs on XP or greater */
#define Py_WINVER _WIN32_WINNT_WINXP
#define Py_NTDDI NTDDI_WINXP
#else
/* Python 2.6+ requires Windows 2000 or greater */
#ifdef _WIN32_WINNT_WIN2K
#define Py_WINVER _WIN32_WINNT_WIN2K
#else
#define Py_WINVER 0x0500
#endif
#define Py_NTDDI NTDDI_WIN2KSP4
#endif
/* VC 7.1 has them and VC 6.0 does not. VC 6.0 has a version number of 1200.
Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't
define these.
If some compiler does not provide them, modify the #if appropriately. */
이걸 다 준비한후에
C:\windows\Sytem32\bcrypt.dll DLL을 로드함
여기서 응답을 받지못함
Bcrypt.dll은 해시 생성 또는 데이터 암호화 및 암호 해독과 같은 기능을 광범위하게 제공하는 라이브러리 제품군의 하나입니다.
bcrypt.dll은 Windows OS에 필수적인 것은 아니나 멜웨어 같은 바이러스는 해당 파일이C:\WINDOWS\system32 폴더에 없을 경우 이것으로 위장하기도 한다점을 기억하기 바랍니다.
그 후 예외처리에 대한 루프들을 돌면서 값을 리턴하고 만들었던 악성 코드가 들어있는 폴더를 삭제함
C:\Users\PC11\AppData\Local\Temp\_MEI102322
트로이목마 프로젝트는 여기까지
플라스크 또는 장고를 이용한 로그 분석 시스템 구축
로그 데이터 : 192.168.0.118
센서 데이터 : 192.168.0.98
센서
mysql
use master
show tables;
select * from sensor_data order by idx desc limit 0,10;
cmd에서
flask run
웹페이지 가동
127.0.0.1:5000
CI4 > MVC(model,view,controller)
Flask, Django > MTV(model,temolate,view)
veiw에 main.py작성
from flask import Blueprint
bp = Blueprint('main',__name__,url_prefix='/')
@bp.route('/')
def index():
return 'Hello'
@bp.route('/profile')
def profile():
return 'profile'
@bp.route('/init')
def init():
return 'init'
security안에
templaes생성 그안에 main생성하고 init.html 작성
@bp.route('/init')
def init():
return render_template('main/init.html')
127.0.0.1:5000/
127.0.0.1:5000/init
127.0.0.1:5000/profile
127.0.0.1:5000/syslog
127.0.0.1:5000/sensor
__init__에 경로 추가 import, blueprint
templates 폴더와 html추가
views에 .py 작성
auth도 작성
startbootstrap.com
소스 받아오기
templates밑에 base.html 만들기
base.html
a
% block content %}
% endblock %}
templates/main/index.html
% extends 'base.html' %}
% block content %}
aa
% endblock %}
static에
css img js scss vendor 넣어주기
경로에 /static/ 추가해주기
base.html footer.html
본인의 관리서버에 아파치 또는 nginx설치후 flask와 연동
sudo apt update
sudo apt -y install lrzsz
sudo apt -y install unzip
date
#sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
cd ~
mkdir venvs
cd venvs
python3 -m venv mysite
cd mysite
cd bin
. activate
pip install wheel
pip install flask
pip install Flask-Migrate
pip install Flask-WTF
pip install email_validator
pip install Flask-Markdown
pip install pymysql
pip install mysql-connector-python
pip install cryptography
---
cd /home/master/venvs
nano mysite.sh
#!/bin/bash
cd ~/projects/flask
export FLASK_APP=security
export FLASK_ENV=production
export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
. ~/venvs/mysite/bin/activate
---
cd ~
nano .profile
alias mysite='export FLASK_APP=security;export FLASK_ENV=production;export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py; cd ~/projects/flask; . /home/master/venvs/mysite/bin/activate'
source .profile
mysite #cmd처럼 mysite만 쳐도 플라스크 접속 가능
---
cd /home/master/venvs
nano mysite.env
FLASK_APP=security
FLASK_ENV=production
APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
---
sudo apt -y install nginx
---
cd /etc/nginx/sites-available
sudo nano mysite
server {
listen 80;
server_name 192.168.X.XXX;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/master/projects/flask/security/static;
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/mysite.sock;
}
}
---
cd /etc/nginx/sites-enabled
sudo rm -rf default
sudo ln -s /etc/nginx/sites-available/mysite
sudo systemctl restart nginx
sudo nginx -t
sudo systemctl start nginx
---
pip install gunicorn
---
sudo nano /etc/systemd/system/mysite.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=master
Group=master
WorkingDirectory=/home/master/projects/flask
EnvironmentFile=/home/master/venvs/mysite.env
ExecStart=/home/master/venvs/mysite/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/mysite.sock \
"security:create_app()"
[Install]
WantedBy=multi-user.target
---
sudo systemctl enable nginx
sudo systemctl enable mysite
mkdir projects
cd projects
mkdir flask
cd flask
unzip flask.zip
sudo reboot
sudo systemctl restart nginx
sudo systemctl restart mysite
#서버와 개발 환경을 위한 config 분리
config
__init__.py
default.py
production.py
development.py
default.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
development.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
production.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
시크릿키 변경
python -c "import os;print(os.urandom(16))"
(mysite) c:\projects\flask>python -c "import os;print(os.urandom(16))"
b'\xd2\x046\xcbP4\xffV\xe1\xb7\x90\xef\x9f+_\xa5'
security안에 있는 __init__.py
app.config.from_envvar('APP_CONFIG_FILE')
mysite.cmd
@echo off
cd c:\projects/flask
set FLASK_APP=security
set FLASK_ENV=development
set APP_CONFIG_FILE=c:\projects\flask\config\development.py
c:\venvs\mysite\scripts\activate
set APP_CONFIG_FILE=C:\projects\flask\config\development.py