Vlad Guliakin
Open to SOC analyst and network administration roles · Miami, FL
4 years in IT at Miami-Dade courts
CompTIA Security+ · Cisco CCNA

Case 001

It’s probably nothing.Investigating anyway.

NetSupport RAT check-ins from a Windows client

Vlad Guliakin - Case 001Case 001

It’s probably nothing.Investigating anyway.

Case 001NetSupport RAT check-ins from a Windows client

NetSupport Manager RAT signatures fired for 45.131.214[.]85 on TCP port 443, from 2026-02-28 19:55 UTC.

In plain words: A Windows computer on the network kept asking a remote-control server outside the network for orders: 264 times in this capture.

Evidence so far

Read the case

Optional. Make the call yourself first, then compare it with mine.

3 exhibitsMy assessment: hidden

Projects

Case 001 - case file

NetSupport RAT check-ins from a Windows client

In plain words: A Windows computer on the network kept asking a remote-control server outside the network for orders: 264 times in this capture.

Source
malware-traffic-analysis.net, Easy As 123 (2026-02-28)
Tools
Zui 1.18.0 (Zeek and Suricata), Wireshark 4.4.19, an isolated Debian VM
Time
About 3 hours
ATT&CK
T1219.002, T1071.001, T1571
On this page 8 sections

1. Alert

NetSupport Manager RAT signatures fired for 45.131.214[.]85 on TCP port 443, starting 2026-02-28 at 19:55 UTC. The evidence was a pcap of the traffic from the internal host that triggered them.

2. Hypotheses

  • Approved IT remote support that uses NetSupportRuled out by Exhibit B
  • The signature fired by mistakeRuled out by Exhibit B
  • A real NetSupport RAT infection talking to its control serverHeld

3. Exhibits

Exhibit AEvidenceSuricata alerts in Zui
Zui: Suricata alerts counted by signature. NetSupport Remote Admin Checkin 264, HTTP traffic on port 443 (POST) 264, NetSupport Remote Admin Response 2, two others 1 each.
The SIEM alarm is real in our own evidence. The NetSupport check-in rule fired 264 times, the server's response rule twice. The rule for HTTP POST on port 443 also fired 264 times, on the same requests.
Exhibit BEvidenceWireshark, Follow TCP Stream, stream 40
Wireshark Follow TCP Stream: a NetSupport Manager/1.3 client POSTs CMD=POLL to /fakeurl.htm, and the server answers as NetSupport Gateway/1.92 with encoded data.
The client calls itself NetSupport Manager/1.3 and POSTs CMD=POLL: it is asking its server for orders. The server answers as NetSupport Gateway/1.92 with encoded data. Two details make this malicious, not just a remote-support tool: the destination, an outside IP that the SIEM already flags, with no company gateway in the environment, where /fakeurl.htm is a known NetSupport RAT control URI; and the port, plain readable HTTP on port 443, the port for encrypted HTTPS.
Exhibit CNoiseZeek HTTP log in Zui
Zui: one HTTP request at 19:55:09 UTC from 10.2.28.88 to www.msftconnecttest.com for /connecttest.txt, user agent Microsoft NCSI.
This alert is harmless. Windows itself (Microsoft NCSI) asked www.msftconnecttest[.]com for one small text file, /connecttest.txt, to check whether the computer has internet access. Every Windows computer does this. Port 80 is not a problem here: nothing secret is sent.

Exhibit ASuricata alerts in Zui

Evidence
Zui: Suricata alerts counted by signature. NetSupport Remote Admin Checkin 264, HTTP traffic on port 443 (POST) 264, NetSupport Remote Admin Response 2, two others 1 each.123
Showing: original evidence, unedited.Showing: original evidence with my annotations on top.
What it is

Suricata alerts in Zui, counted by signature. By source, destination and port, 528 of them (264 + 264) go from 10.2.28[.]88 to 45.131.214[.]85 on port 443. The two single alerts are the domain controller (10.2.28[.]2) and the Windows connection test in Exhibit C.

Why it mattered

The SIEM alarm is real in our own evidence. The NetSupport check-in rule fired 264 times, the server's response rule twice. The rule for HTTP POST on port 443 also fired 264 times, on the same requests.

My annotations
  1. 1264 NetSupport check-ins: the alarm, found again in the evidence.
  2. 2The same 264 requests are plain HTTP POSTs on port 443, the port for encrypted HTTPS.
  3. 3The server answered only twice.

Annotations are hidden. This is the evidence as it was captured.

Log text, original. Select it or copy it.
event_type=="alert" | count() by alert.signature | sort -r count
1{signature: ET INFO NetSupport Remote Admin Checkin} 264
2{signature: ET POLICY HTTP traffic on port 443 (POST)} 264
3{signature: ET INFO NetSupport Remote Admin Response} 2
{signature: SURICATA Applayer Detect protocol only one direction} 1
{signature: ET INFO Microsoft Connection Test} 1
OriginalScreenshot and log text exactly as captured1Annotation: my marks, switch them off any timeNoiseChecked and set aside

Exhibit BWireshark, Follow TCP Stream, stream 40

Evidence
Wireshark Follow TCP Stream: a NetSupport Manager/1.3 client POSTs CMD=POLL to /fakeurl.htm, and the server answers as NetSupport Gateway/1.92 with encoded data.1234
Showing: original evidence, unedited.Showing: original evidence with my annotations on top.
What it is

Wireshark filter ip.addr == 45.131.214[.]85, then Follow, TCP Stream, stream 40. The full stream holds 264 client packets and 2 server packets.

Why it mattered

The client calls itself NetSupport Manager/1.3 and POSTs CMD=POLL: it is asking its server for orders. The server answers as NetSupport Gateway/1.92 with encoded data. Two details make this malicious, not just a remote-support tool: the destination, an outside IP that the SIEM already flags, with no company gateway in the environment, where /fakeurl.htm is a known NetSupport RAT control URI; and the port, plain readable HTTP on port 443, the port for encrypted HTTPS.

My annotations
  1. 1A POST to /fakeurl.htm, a known NetSupport RAT control URI, as plain HTTP on port 443.
  2. 2The client names itself: NetSupport Manager/1.3.
  3. 3CMD=POLL: the client asks its server for orders.
  4. 4The server answers as a NetSupport Gateway, with encoded data.

Annotations are hidden. This is the evidence as it was captured.

Log text, original. Select it or copy it.
1POST hxxp://45.131.214[.]85/fakeurl.htm HTTP/1.1
2User-Agent: NetSupport Manager/1.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
Host: 45.131.214[.]85
Connection: Keep-Alive
3CMD=POLL
INFO=1
ACK=1
HTTP/1.1 200 OK
4Server: NetSupport Gateway/1.92 (Windows NT)
Content-Type: application/x-www-form-urlencoded
Content-Length: 69
Connection: Keep-Alive
CMD=ENCD
ES=1
DATA=(encoded bytes)
OriginalScreenshot and log text exactly as captured1Annotation: my marks, switch them off any timeNoiseChecked and set aside

Exhibit CZeek HTTP log in Zui

Noise: checked and set aside
Zui: one HTTP request at 19:55:09 UTC from 10.2.28.88 to www.msftconnecttest.com for /connecttest.txt, user agent Microsoft NCSI.12
Showing: original evidence, unedited.Showing: original evidence with my annotations on top.
What it is

Zeek's HTTP log in Zui, for the server of the one Microsoft Connection Test alert (23.47.50[.]182).

Why I set it aside

This alert is harmless. Windows itself (Microsoft NCSI) asked www.msftconnecttest[.]com for one small text file, /connecttest.txt, to check whether the computer has internet access. Every Windows computer does this. Port 80 is not a problem here: nothing secret is sent.

My annotations
  1. 1An alert on the infected host, over plain HTTP on port 80.
  2. 2Windows' own internet check, Microsoft NCSI, asking for /connecttest.txt.

Annotations are hidden. This is the evidence as it was captured.

Log text, original. Select it or copy it.
_path=="http" id.resp_h==23.47.50.182 | cut ts, id.orig_h, host, uri, user_agent
ts: 2026-02-28T19:55:09.772238Z
1id.orig_h: 10.2.28[.]88
host: www.msftconnecttest[.]comnoise
uri: /connecttest.txtnoise
2user_agent: Microsoft NCSInoise
OriginalScreenshot and log text exactly as captured1Annotation: my marks, switch them off any timeNoiseChecked and set aside

4. Timeline

  1. 19:55:0710.2.28[.]88 gets its address by DHCP as DESKTOP-TEYQ2NR, MAC 00:19:d1:b2:4d:ad (Zui, DHCP log). All times UTC, 2026-02-28.
  2. 19:55:09Windows checks its internet connection with www.msftconnecttest[.]com: harmless (Exhibit C).
  3. 19:55NetSupport check-ins to 45.131.214[.]85:443 begin; 264 in the capture (Exhibit A).
  4. 00:10:09The latest Kerberos record from 10.2.28[.]88, on March 1 (Zui, Kerberos log).

5. Verdict

REAL THREAT

True positive, severity high: DESKTOP-TEYQ2NR (10.2.28[.]88, account brolf) runs a NetSupport client that checks in with 45.131.214[.]85 and asks it for commands, and a remote access tool on a domain-joined computer is talking to an outside server. Open check: confirm with IT that NetSupport is not approved software here. Next: isolate the host, block 45.131.214[.]85 at the firewall and proxy, reset brolf's password and review the account's recent sign-ins. Escalate to Tier 2 to find how NetSupport got on the host and how it starts, and search other hosts for traffic to 45.131.214[.]85 and for the NetSupport Manager User-Agent.

6. Detection

title: NetSupport Manager Check-in Over HTTP
status: experimental
logsource:
  product: zeek
  service: http
detection:
  selection_user_agent:
    user_agent|startswith: 'NetSupport Manager'
  selection_uri:
    method: 'POST'
    uri|endswith: '/fakeurl.htm'  # the client sends the full URL in the request line
  condition: selection_user_agent or selection_uri
level: high

A company that really uses NetSupport through its own gateway: allowlist those gateway IPs. Not yet run in Zui; from the fields in Exhibits B and C, it should match the check-in and not the Windows check.

7. Takeaway

Check this on your own network

Look for NetSupport clients in your Zeek HTTP logs and compare each server with your approved gateways: _path=="http" user_agent=="NetSupport Manager/1.3" | count() by id.orig_h, id.resp_h, id.resp_p

If you are not technical

Allow remote-access tools only through your own approved gateways, and alert on anything else.

8. Hindsight

I trusted a file name before its size: my first extract left a 0-byte pcap with the right name, and only the size check caught it, so now I check size and hash before I open evidence. I first called every alert row bad, because the infected IP was in all of them; in a capture of one host, that host is in every row, so now I judge each row by the other side of the conversation. I first read port 80 as the suspicious part; the real warning sign was the opposite, plain HTTP on port 443. Zeek's Kerberos log showed only nulls while Wireshark showed the user name, so when one tool shows nothing I check with a second one. I looked for the full name only in LDAP and found nothing; next time I check every protocol the host uses with the domain controller, and I record the first and last check-in times while the VM is still open. Not verified: the user's full name, the exact first and last check-in times, and the detection rule in Zui.

8 sections3 exhibits

System Properties

System:
Desk 95
Version 2 (2026)
Registered to:
Vlad Guliakin
CompTIA Security+
Computer:
Open to SOC analyst and network administration roles
64.0MB of coffee

Display Properties

Shut Down

Are you sure you want to:

It’s now safe to hire Vlad.

Press any key to restart.

DESK 95

A fatal exception 0E has occurred at ANALYST.DESK.

Press any key to hire Vlad