<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Superfish | The End of the Tunnel</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/tags/superfish/</link><atom:link href="https://development--vigilant-hodgkin-644b1e.netlify.com/tags/superfish/index.xml" rel="self" type="application/rss+xml"/><description>Superfish</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2019 Derek Murawsky</copyright><lastBuildDate>Thu, 19 Feb 2015 16:34:26 -0400</lastBuildDate><image><url>https://development--vigilant-hodgkin-644b1e.netlify.com/img/icon-32.png</url><title>Superfish</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/tags/superfish/</link></image><item><title>Searching for Superfish using PowerShell</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/searching-for-superfish/</link><pubDate>Thu, 19 Feb 2015 16:34:26 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/searching-for-superfish/</guid><description>&lt;p&gt;Lenovo installed a piece of software that could arguably be called malware or spyware. Superfish, as &lt;a href=&#34;http://arstechnica.com/security/2015/02/lenovo-pcs-ship-with-man-in-the-middle-adware-that-breaks-https-connections/&#34; target=&#34;_blank&#34;&gt;this article&lt;/a&gt; indicates, installs a self-signed root certificate that is authoritative for everything. I wanted to be sure that this issue wasn’t present on any of our Lenovo systems, so I turned to PowerShell to help.&lt;/p&gt;
&lt;p&gt;I found a copy of the certificate on Robert David Graham’s github &lt;a href=&#34;https://github.com/robertdavidgraham/pemcrack/blob/master/test.pem&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;. I pulled the thumbprint from the cert which appears to be: ‎c864484869d41d2b0d32319c5a62f9315aaf2cbd&lt;/p&gt;
&lt;p&gt;Now, some simple PowerShell code will let you run through your local certificate store and see if you have it installed.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Get-ChildItem -Recurse cert&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;\LocalMachine\ |where {$_.Thumbprint &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;c864484869d41d2b0d32319c5a62f9315aaf2cbd&amp;#34;&lt;/span&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You could just as easily replace the get-childitem with “Remove-Item -Path cert:\LocalMachine\root\c864484869d41d2b0d32319c5a62f9315aaf2cbd”, but I wanted to make sure the key wasn’t installed somewhere else.&lt;/p&gt;
&lt;p&gt;Now, to take it a step further, I use the AD commandlets and some more simple PowerShell to search all my systems for it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Import-Module ActiveDirectory
$Cred = Get-Credential
$Computers = Get-ADComputer -Filter {enabled &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; $true} | select Name
&lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ($Computer &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; $Computers) {
&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt;{
&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(test-connection -Count 1 -ComputerName $Computer.Name){
write-output (invoke-command -ComputerName $Computer.Name -Credential $Cred -ScriptBlock {Get-ChildItem -Recurse cert&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;\LocalMachine\ |where {$_.Thumbprint &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;‎c864484869d41d2b0d32319c5a62f9315aaf2cbd&amp;#34;&lt;/span&gt;}})
}
}&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt;{
Write-Error (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;There was an issue connecting to computer $Computer : &amp;#34;&lt;/span&gt; + $_.Exception)
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Is it perfect? No. But it gets the job done in relatively short order.&lt;/p&gt;</description></item></channel></rss>