ADVERTISEMENT

Checking for Pegasus

Published Jul 23, 2021 06:40 am

Photo by Sigmund on Unsplash

The Guardian newspaper recently published an article, “Revealed: leak uncovers global abuse of cyber-surveillance weapon”, detailing how governments have (ab)used, Pegasus, a spy-software sold by an Israeli surveillance company, NSO Group. These NSO Group clients used the software to target political critics, journalists, lawyers, and activists, including their families. What Pegasus does is exploit iPhone and Android smartphone vulnerabilities to gain full remote access to the device (extract data, turn microphone and camera on/off remotely, etc.). The likelihood that you are among those targeted by Pegasus users is slim, but if you are a politician, activist, human rights lawyer, or are related or friends with any of them, then the possibility of being included increases.

How do you know if you are targeted?

Whilst the possibility of being targeted cannot be disregarded, I had to check my iPhone if it is infected. Luckily, Amnesty International Security Lab, one of the organizations responsible for the expose, published their forensics tool on Github, along with the list of indicators that they have collected. The tool, Mobile Verification Toolkit, and the Pegasus STIX file, are open-source and free.

Essentially, you need (1) Mobile Verification Toolkit (MVT), which runs best on Linux or MacOS, (2) a copy of your encrypted backup done either by using another tool you install on Linux, libimobiledevice, or from your MacOS, and of course, the (3) STIX file.

I secured my iPhone backup first. Whilst doing the backup, I started installing the toolkit on a Raspberry Pi and downloading the STIX file. When the backup was done, I realized that all 61GB of it won’t fit the Raspberry Pi storage, so I shifted to the Ubuntu Linux laptop running 20.04 with the latest patches. For some reason, the toolkit’s dependencies (the libraries) were having some issues (which I found a bit weird), so I decided to build all of them directly from source. After doing a couple of “autogen.sh, make and make install”, the mvt was installed and functioning perfectly. Now I’m ready.

Instead of using the available backup created from the Mac, I decided to tether the iPhone to the Ubuntu laptop and extracted a backup directly. It took several minutes considering that it was done through USB 2.0 (aka slow) and it had to collect and encrypt 61GB worth of data. Once the backup has been saved on the laptop, I started the mvt process — decrypt and then check — took around 30 minutes to complete and generate the reports. The reports are all in JSON format. I was dreading to see if there’s a file suffixed with _detected.json, which indicated a Pegasus infiltration, and did not find a single one! *whew*

What’s next?

Amnesty International Security Lab and Citizen Lab also identified a couple of URLs that are being used by the NSO Group’s Pegasus clients. You can download the list of URLs and block them off of your network to provide some layer of protection (but then again, if you are targeted, you will need far more than just blocking traffic to these URLs!). Whilst I have yet to verify it, but I have heard that ControlD.com and NextDNS.io already block these identified URLs.

Whilst the last iOS version, 14.6, was included in the exploited iPhones, which means that the vulnerabilities have not yet been patched up, iOS 14.7, which was released earlier this week, has yet to be tested. So, if you still haven’t updated your iPhone OS, now is the time to upgrade to iOS 14.7! That being said, if you are one of those VIPs who are potential targets, assume that your smartphone has already been compromised. Good luck and stay safe.

ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.