Marcus Hutchins' uses Community Portfolio. It inflicts 500 kudos points, super effective.

izzy's playlists!
I'd rather be in outer space đ¸
art blog(derogatory)

#extradirty

pixel skylines
NASA

Discoholic đŞŠ
KIROKAZE
Keni
One Nice Bug Per Day
EXPECTATIONS
Fai_Ryy

bliss lane
Monterey Bay Aquarium
The Bowery Presents
Cosmic Funnies
RMH

shark vs the universe
"I'm Dorothy Gale from Kansas"

seen from Malaysia

seen from Malaysia

seen from Belgium

seen from United States
seen from Ireland

seen from Canada
seen from United States

seen from United States
seen from United States

seen from Malaysia

seen from Malaysia
seen from Canada
seen from Jordan
seen from United States
seen from Jordan
seen from Brazil
seen from United States
seen from United States
seen from United States
seen from United States
@morethankradio
Marcus Hutchins' uses Community Portfolio. It inflicts 500 kudos points, super effective.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Puzzle Baronâs Cryptograms!
Tâis the season to be backposting đ
âImprove your security skills, and then show them off!â đ¤
Iâd like to take this,
chance to wow [you] with... [my] ability to correctly crack ciphers.
Specifically Puzzle Baronâs substitution ciphers. As you can see, not only can I correctly crack these ciphers, but after some astute training in early June, I am now able to crack them in Above Average time đ
ETAOIN SHRDLU and two letter words aside, Iâm pretty sure the fastest way to crack these is to Google the quote author đ
May have become too dependent on the puzzle cracking tooling provided by Mr. Baron as it was significantly harder to get out the quote in the midsem without letter frequency suggestions.
Something Awesome: Data Thief or Gift Recipient
Okay, weâve seen more than a few attacks that can be performed when someone clicks a link or navigates to a website.
Cryptojacking
Cross Site Request Forgery
Drive-By Attacks
Zoom 0day
But itâs time to pay homage to the attack thatâs hidden in plain site.Â
tldr; head over to https://fingerprintme.herokuapp.com/ for some fun.
Passive Data Theft
I hesitate to call it theft when in fact we are giving all of this data to every website we visit like a little gift.Â
Please, accept this bundle of quasi-identifiers as a token of my appreciation.
Many internet users have no idea just how much data is available to websites they are visiting, so itâs worth exploring just what is in our present.
IP Address and Geolocation API
Like any good gift giver, we better write on the tag.Â
To: <website server> From: <your IP address>
Your IP (Internet Protocol) address is a little 32-bit (now possibly 128-bit) number that uniquely identifies your device on the Internet. This is by design; people need to be able to address you to be able to send you any packets. A static 1:1 mapping of devices to IPs is definitely a massive exaggeration today as as we use technologies to let multiple devices share one IP, dynamically acquire an IP for each session, and our ISPs (Internet Service Providers) may also dynamically assign our IP address.
Nonetheless, IP addresses have (again by design) another function; location addressing. This is because when youâre internet traffic is propagating through the Internet (a global network of routers) it needs to know where it physically needs to go, and fast. Owing to this, the internet has taken on a hierarchical structure, with different ISPs servicing different geographical regions. These ISPs are tiered such that lower tier ISPs service specific subsets of the upper level tierâs region, providing more geographical specificity. It is this property of IP addresses that allows anyone with your IP address to get a rough idea where you are in the world. Moreover, IP addresses from specific subnets like AARNet (for Australian Universities) can be a giveaway for your location.
Try Googling âmy ipâ or âwhere am iâ. There are many IP to Geolocation API services available. I have made use of https://ipgeolocation.io/, which has a generous free tier đ.
User Agent
Every request your browser makes to a server is wrapped up with a nice little UserAgent String bow, that looks a little like this,
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>
Oh how sweet đ itâs our Operating System, our browser and what versions we of each we are running, and if the server is lucky, perhaps a few extra details.
Here are a few examples from MDN:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Why might this be a problem? Allow me to direct you towards my earlier post on Drive-By Attacks. Vulnerabilities are often present in specific versions of specific platforms. If an exploit server detects that your particular version of Chrome for Windows (for example) has a known vulnerability, well then prepare to be infected.Â
Navigator
Okay, I think weâve been polite enough, itâs time to rip this packaging open! Ooh what is this inside? Itâs an invitation to our browser of course!Â
When we send off a request to a web server complete with our IP and User Agent string, the web server will typically respond by sending us a web page to render. These days a web page can be anything from a single HTML file with a few verses from a dead poet, to a fully fledged JavaScript application. To support this development, browsers are exposing more and more functionality/system information through a special JavaScript interface called Navigator.
From MDN,
The Navigator interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities.
...to carry on some activities... I wonder. The list of available properties and methods is pretty comprehensive so Iâll just point out a few interesting ones.
getBattery() (have only seen this on chrome)
connection (some details about your network connection)
hardwareConcurrency (for multithreading)
plugins (another important vector for Drive-Bys)
storage (persisted storage available to websites)
clipboard (requires permissions, goodness plz be careful)
doNotTrack (i wonder who checks this...)
vibrate() (because haptic is the only real feedback)
While Iâve got it in mind, hereâs a wonderful browser localStorage vulnerability I stumbled across https://github.com/feross/filldisk.com. Thereâs a 10MB per site limit, but no browser is enforcing this quota across both a.something.com and b.something.com...
I have no idea why Chrome thinks itâs useful to expose your battery status to every website you visit... Personally, the clipboard API feels the most violating. It requires permissions, but once given youâre never asked again. Control/Command + V right now and see whatâs on your clipboard. I doubt thereâs many web pages that youâd actually want to be able to read your clipboard every time you visit.
Social Media Side Channel / CSRF
Okay, now weâre getting a little cheeky. Itâs actually possible to determine if a browser has an authenticated session with a bunch of social media platforms and services.
Itâs a well known vulnerability (have a laughcry at some of the socials responses), which abuses the redirect on login functionality we see on many of these platforms, as well as the Same-Origin Policy SOP being relaxed around HTML tags, as we saw was sometimes exploited by Cross Site Request Forgery attacks.
Consider this lovely image tag.
<img src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico%3F_rdr%3Dp">
As you can see, the image source (at least originally) doesnât point to an image at all, but rather the Facebook login page. Thanks to SOP, we wouldnât and shouldnât be able to send an AJAX request to this website and see the response. But this HTML image tag is going to fire off a GET request for itâs source no problem.Â
Thanks to redirect on login, if a user rocks up to the login page with the correct session cookies then we wonât have them login again, but rather we redirect them to their newsfeed; or, as it turns out, whatever the URL parameter next points to. What if we point it to an actual image, say the website icon, such that the HTML image tag loads if we are redirected, and fails if not.
Simple but effective. You can try it for yourself here, by opening my codepen in your browser when youâre signed in to Facebook, and when youâre signed out (or just use Incognito).
Fingerprint Me v1.0
Okay, time for a demonstration. I took the liberty of writing my own web page that pulls all this data together, and rather than store it for a rainy day (like every other page on the web), I present it to the user on a little web dashboard. Itâs like a mirror for your browser. And who doesnât like to check themselves out in the mirror from time to time đ
Random technical content: I had to fetch the geolocation data server-side to protect my API key from the client, then I sneak it back into the static HTML web page Iâm serving to the user by setting it on the window variable in some inline script tags.
I bust out some React experience, and have something looking pretty (pretty scary I hope) in some nondescript amount of time (time knows no sink like frontend webdev). I rub my hands together grinning to myself, and send it off to some friends.
âVery scaryâ. I can see straight through the thin veil of their encouragement and instead read âYeaaaah okayâ. One of them admits that they actually missed the point when they first looked at it. But.. but... nevermind. Itâs clearly not having the intended effect. These guys are pretty Internet savvy, but I feel like this should be disconcerting for even the most well seasoned web user...Â
Like that moment you lock eyes with yourself in the mirror after forgetting to shave a few days in a row.
Fingerprint Me v2.0
An inspired moment follows. I trace it back to the week ?7 activity class on privacy:
It is very hard to make a case for privacy. What is the inherent value of privacy? Why shouldnât the government have our data, we give it to a million services everyday anyway, and receive a wealth of benefits for it. Go on, have it. I wasnât using it for anything anyway.Â
It is very easy to make a case for privacy, if there is any sense that someone malicious is involved. As soon as there is someone who would wish us ill it becomes obvious that there are things that the less they know the better.Â
<Enter great The Art of War quote here.>
~ Sun Tzu
Therein lies the solution. I need to make the user feel victimised. And what better to do it than a green on black terminal with someone that calls themselves a hacker rooting your machine.
DO CLICK THIS LINKÂ (itâs very safe, I promise)Â https://fingerprintme.herokuapp.com
Some more random technical content: Programming this quite synchronous behaviour in the very async-centric JavaScript was quite a pain. It was particularly tricky to get around the fact that React renders itâs component hierarchy top down, so I needed the parent components to mount empty in order for them to be correctly populated with child components later. It was also a pain to access and render child components conditionally, especially if you want to have sets of child components in different files, as though they arenât ultimately nested in the DOM, React will treat them as if they are.
Some User Reviews:
âIt feels like I should shut the windowâ
âThis is SO RUDEâ
âBattery level. I mean. Literally. How.â
Excellent.
Recommendations
Know whatâs in your present, and who youâre gifting it to đ
To protect your IP address/location consider using a VPN or ToR
Check out NoScript, a browser plugin that will block JavaScript by default, but allow you to enable it for trusted sites.
Check out and share https://fingerprintme.herokuapp.com đ
Something Awesome: Zoom 0-day
Holy moly, this is spicy đś. A prime example of how third party integrations add additional attack vectors to link clicking / website based attacks.
A security engineer at Gradle has found a vulnerability in Zoomâs Mac client and everything about it is just so convenience vs. security.
There are many facets to examine here, but the short of it is that any website can forcibly pull a Mac Zoom user (or ex. Mac Zoom user... more on this) into a video conference complete with their webcam enabled.
đť đĽ đđđđđđđđđ
If youâre not familiar, Zoom is a massive online video conferencing platform that only just had itâs IPO in April this year, valuing at a whopping $17 billion. What Zoom does best is convenience; to quote them,
âInstant sharing.âÂ
âMeeting face to face is as simple as a single touch.
In order to join a zoom conference, a user need only click a single link like https://zoom.us/j/123456789, which will launch the Zoom Client and pull the user straight into the meeting. This kind of convenience is what sets Zoom apart from its competitors. Intrigued by this functionality, the security engineer started to probe for how it was implemented and... goodness me.Â
When a Zoom link, like https://zoom.us/j/conference_id, is clicked... the browser requests the web page there and renders it (no black magic yet đ). Among other things (idk i havenât seen it) the web page has a few images on it... except these arenât just any images (okay black magic inbound đ§ââď¸),
<img src="http://localhost:19421/launch?action=join&confno=123456789"/>
The images have been given a localhost source... It turns out that Zoom actually runs a web server on your local machine; it just sits there spinning at http://localhost:19421.Â
Well thatâs never going to work right?? Iâve run little web servers on localhost before, and Iâve never considered that other websites could load my images from them. What about the Same Origin Policy? Keep me safe my sweet little browser sandbox.
The thing is, this doesnât really look like itâs loading an image at all but rather just some sort of command. Why arenât they just making an AJAX GET request? Iâm not sure about the specifics here but it seems that theyâve tried to use CORS to allow their site to talk to the server, only to find CORS unsupported on localhost. Using an image tag is a workaround for this, perhaps like the way we use images and forms in CSRF.
The best part is that the local server responds to requests with status and error codes by setting the dimensions of the image to predefined values đś. The security engineer found the mapping of dimensions to codes in the web pageâs code, which revealed that launch is just the beginning. There are alsoÂ
client download
client install
client version checksÂ
commands, as well as a bunch of error codes relating to these.
This is what I hinted at before. Where the user has uninstalled the Zoom client but failed to stop the local server, the Zoom website is capable of re-installing the Zoom client via the local serverâs strange API.
Except itâs not just the zoom website... because CORS has been circumvented, any website could launch the client by just including these image tags.
Moreover, Zoom, in offering the utmost convenience to their users, provides an option for meeting hosts to have their participants enter the meeting with their webcam enabled.
Together this is something of a nightmare for Mac Zoom users. Any web page they visit, or as weâve learned, any advertisement displayed on any web page they visit, could at any moment pull them face-first into a video chat.
Recommendation
https://mashable.com/2018/01/17/webcam-covers-buy-sliding-stickers-internet-privacy/
You can also check out the link below for options to disable this functionality and purge your computer of Zoomâs local web server.
Wrap Up
Itâs an excellent story and a very real example of convenience vs. privacy. It is also interesting to explore Zoomâs attitudes and response towards the vulnerability.
If you want it from the horses mouth:Â https://medium.com/bugbountywriteup/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5
Something Awesome: Cryptojacking
To be fair this is probably one of the most benign link/website based attacks...
Youâll find it dressed up like this in media releases like this,
âRight now, your computer might be using its memory and processor power â and your electricity â to generate money for someone else, without you ever knowing. Itâs called âcryptojackingâ...â
~ The Conversation
And that is exactly true. To be fair, there have been some nasty trojan desktop cryptojacking software that will run in the background all day and night, but in the context of websites, itâs for the duration in which you have the web page open and once closed thereâs really no harm done. To toy with some innocuous phrasing, itâs basically the most fun an attacker can have in your sandbox.Â
When we visit a website, our browser receives HTML and CSS files to render the web page and JS files to run. Itâs reasonable for us to presume that these JS files will be doing the processing required to make the web page more interesting, and useful, but really thereâs nothing to stop someone sending you a JavaScript file that saysÂ
while(true);
Whatâs that going to do? Well this code is running in YOUR browser, so itâs going to waste YOUR precious clock cycles and in this case probably crash the tab... đđđÂ
A far more inspired person realised that there is another computationally intensive operation that they could send you, that could actually make them money... not satellite image processing, not calculating primes, but mining cryptocurrency!
This all came about in the last couple of years. September 2017 marked the release of Coinhive, a service that allowed websites to serve a JavaScript based Monero miner to their visitors to generate revenue. This was with all of the right intentions, with hopes that mining could be a less invasive alternative to the advertising currently financing many free web services, or even to finance charities like UNICEF.
But ?of course there were issues. It has proven difficult to effectively throttle the mining process, particularly when being performed by multiple sites, resulting in degrading performance for users. Some sites that did not disclose their latest revenue raising techniques which broke user trust. But the most malicious cases have to do with malvertising, and script insertion. This was rampant for a time, with someone going so far as planting a cryptojacking script on the Make-A-Wish foundation page...
Recommendations
Check your CPU usage with your systemâs process monitor (Windowâs Task Manager, Macâs Activity Monitor, or even Chromeâs Task Manager).
Download one of the many browser extensions that block cryptocurrency mining scripts including No Coin, minerBlock or AdBlockPlus.
Then check out https://cryptojackingtest.com/, a fun little website from the Opera team that tries to load a mining script to see if youâre protected.
But if itâs UNICEF, then maybe think about letting that one just run.
Real World Examples
[2018] Make-A-Wish, through Drupal vulnerability
[2018] Nova Scotia university, network shutdown for 4 days.
[2018] BrowserAloud, Coinhive miner injected into an accessibility plugin for dyslexia.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Something Awesome: Cross-Site Request Forgery
Perhaps youâve heard of the infamous Cross-Site Scripting (XSS) exploit, where an attacker injects a script into a website through an unsanitised user input. The idea is that if this user input is for some user generated content like a comment that is then displayed on the site, then this script will be run by future visitors.Â
Today weâre going to take a look at the (possibly, Iâm not quite sure yet) related Cross-Site Request Forgery (CSRF or XSRF for consistency) attack. Wikipedia says,
...unlike XSS, which exploits the trust a user has for a particular site, CSRF exploits the trust that a site has in a user's browser.Â
Iâve also just discovered another seemingly related attack Cross-Site History Manipulation (XSHM), and so at this point I really want to know what is this Cross-Site (XS) business all about. If you google for the keywords âCross-Siteâ you just turn up a heap of XSS related content, but thankfully the OWASP site on XSHM mentions a Same Origin Policy (SOP) that it claims isÂ
...the most important security concept of modern browsers.
Well then⌠letâs start there.
Same-Origin Policy (SOP)
Wikipedia paraphrased again,
A browser permits scripts contained in a web page to access data in a second web page, but only if both web pages have the same origin (read: url[1]).
Malicious scripts on one page, canât access sensitive data (including HTTP cookies) on another web page through that pageâs Document Object Model (DOM) or global JavaScript object. Weâre trying to achieve client-side separation of content provided by unrelated sites. It only applies to scripts, and not images, CSS and dynamically loaded scripts (OH OKAY, was wondering how CDNs work...). Apparently CSRF exploits the fact that the same origin policy does not apply to HTML tags? Really? Okay?
Why Do We Need SOP?
A user has just finished an online banking session and leaves the site without logging out. This likely means that whatever was being used to authenticate the userâs requests to the bankâs servers (letâs say session cookies) is still around in the users browser. The user then goes to another site which sends them a JavaScript file to run in their browser. JavaScript is a Turing complete language, which is essentially capable of doing anything a user can do in a browser. What happens when that script decides to revisit the bank website and craft a few new transactions to someone. Note that the script doesnât need direct access to the session cookies to use them. Since the script is running in the userâs browser, any requests it makes to the banks site will be automatically equipped with the relevant session cookies for that site. This is what the Same Origin Policy is meant to prevent. Simply, we say that if the script isnât from the bankâs site, then we wonât allow it to do things the user could do on the bankâs site.
Cross-Site Request Forgery
Okay then, so now that web pages from different origins cannot communicate with each other thanks to SOP, letâs get back to CSRF; or by itâs cooler names, Sea Surfing/Session Riding. Believe it or not, Cross-Site Request Forgery, is centered around a forged request. Specifically a request is made from the userâs browser to a server with which a user is authenticated. The request arrives with the appropriate session cookies, and the server is none the wiser that this request was not the userâs intention.
How is this request made?
The simplest way⌠you guessed it, a link click. Give the user a disguised link that fires off a GET request to the server the user is authenticated with. Importantly, to do anything meaningful here, we need that server is using GET parameters to allow the user to perform some state changes. If your bankâs server is accepting requests like this, itâs most definitely time to get a new bank...
GET http://bigbank.com/transfer?acct=AttackerA&amount=$100 HTTP/1.1
Can we do this automatically with JavaScript? Well we know the SOP prevents this script from accessing data on other origins. But thereâs a very ambiguous word here, access. To my best knowledge, SOP will prevent the script reading data returned from other origins, but doesnât necessarily prevent the request itself! So a GET request fired from JavaScript will nonetheless have the desired effect, even if the script canât read the response.
Okay, but what self respecting server is going to let the user do anything meaningful with a GET request. This leads us back to âCSRF exploits the fact that the same origin policy does not apply to HTML tagsâ. There is in fact an HTML tag that is very capable of making POST requests, an HTML form. Moreover, JavaScript is perfectly capable of submitting a form on behalf of a user. Once again, SOP prevents the script from reading the response, but does that matter when the server has gone ahead and made the transfer⌠no.
This is a take-home point, CSRF specifically attacks changes in state because it canât see the response.
Recommendations
As a user, the recommendations look a lot like all my other posts with one notable emboldened suggestion:
Check your links before you click them.
Avoid manually typing URLs into your browser.
Sign-out of authenticated applications before browsing the internet.
The last is, of course, not something that anyone but the most cautious internet user will actually do in the age of convenience. So letâs just hope that applications have taken it upon themselves to defend against CSRF attacks. The most common approach to this is to use a CSRF token. This token is cleverly hidden in the cross-site script unreadable DOM (thanks SOP) and alongside the relevant session cookies, is required in sensitive requests from the user.
Real World Examples
[2006] Netflix, way back when, âadding a DVD to the victim's rental queue, changing the shipping address on the account, or altering the victim's login credentials.â
[2008] ING Direct, âopen additional accounts on behalf of a user and transfer funds from a user's account to the attacker's account.â
[2015] MyBB, âadding administrator userâ.
[1] Unlike other browsers, Internet Explorer does not include the port in the calculation of the origin, using the Security Zone in its place đ
Week 7 Activity Class
This weekâs activity class was something of a debate, albeit a little hard to debate in teams of nine. I was blessed with a spot in the pro privacy team... I thought. But when it comes down to it, it turns out that it is quite hard to pinpoint the value of privacy.
First things first, letâs consider that,
The government needs data to prevent terrorism and crime.Â
To which we questioned whether you can prove effectiveness? Current systems have a high rate of false positives to which we can either respond by picking-up more people incorrectly, wasting time and resources. Or we calibrate to be not very sensitive, at the risk of missing legitimate targets. Type I/II Errors again. We tend to optimise for the latter, but the issue is that we havenât lost our sense of security that we get from using these technologies. They make us complacent.
But there are bigger issues at play here.Â
Big issue #1:Â Once data is collected, you canât get rid of it.Â
Big issue #2:Â No-one, can guarantee data security.
Even the NSA has been subject to data breaches. There was a US defense biometrics leak; you canât just go out and change your biometrics once theyâve been compromised.
And yet these issues arenât issues, unless I can convince you that privacy (or alternatively scoped, that only the right people having access to your data) is important. And herein lies the challenge in our post-privacy world. Because we incessantly project our data out into the public sphere, and receive a wealth of convenience and opportunity for it.
And so it is that it is hard to make a case for privacy in and of itself, until someone or something is out to get you, at which point itâs too late.Â
Yet another low probability, high impact risk that we are at the mercy of our DNA to evaluate incorrectly.
Some pre-reading notes follow:
Week 7 Lecture Musings
Format Strings
Look, if thereâs one thing I want to take away from the lectures this week itâs format string errors.
c has a crazy way of printing information in a structured way... itâs called printf ~ gold from Richard.
Contrary to popular belief, printfâs first argument isnât really meant to be the string you want to print. It is a format string, which tells you what to do with all the other arguments, however (and convenience trumps sense once again) non control symbols are just printed literally.
printf("%s\n","Hello world"); // intended usage printf("Hello world\n"); // real world usage
So what?Â
Well format strings have a special property that is not afforded to other strings. They can demand arguments.
printf("Stack dump: %s"); // Inside printf, %s demands a string
Of course, as any proficient c programmer can see, we didnât pass a second string argument to printf. And yet the format string demands, âGIVE ME THE STRING THAT WAS PUT ON THE STACK AFTER ME!â. The ever obedient c function printf does as it is told and yields whatever is on the stack after the format string... then it proceeds (business as usual) to print it out in ASCII until it finds an NUL terminator.Â
* ASCII dump of stack acquired *
Never fear, if ASCII is not your thing then youâve got a whole world of type interpretations to play with.
printf("%x%x%x%x%x...%x"); // print out the stack in hex
By all means, as a C programmer, you can have lots of fun with this in the privacy of your own machine. BUT PLEASE DONâT LET YOUR USERS DO THE SAME.
printf(name); // this is crazy talk if name was user input.
The icing on the poisonous cake of convenience is â%nâ. This sickly sweet little argument demands a memory address to which it can write, YES WRITE, the integer count of how many characters have been written by printf so far. Whilst it is certainly challenging to use â%nâ to do do something particular, we know all to well that sometimes the holes in the swiss cheese align. And when they do, letâs hope itâs not for someone malicious trying inputs into your program.
A less inspired dump of other lecture content follows:
Something Awesome: Drive-By Attacks
This attack has me double guessing every link I click on right now (how long will that last đ ). The risks associated with clicking links seemed relatively benign until I discovered drive-by attacks. This class of attack is built around exploiting link clicks, browsing compromised websites, and malvertising (malware through advertising).
tldr; purge Flash and keep your everything up to date.
I have always felt pretty safe browsing the web. I thought of my browser as a little sandbox, and as long as I donât download and open dodgy looking files or put my details into spurious web pages then I should be fine. And (to my best knowledge) for the most part this is true. But, like all software, ever, this sandbox is only as secure as the human written lines of code that it is made of, i.e. itâs not secure.
Our browsers get even less secure when we consider them as part of a bigger system. Now we depend on the security of the underlying operating system, as well as any browser extensions we add on, both of which provide additional vectors to exploit. To give you an idea of what this space looks like, check out the ever growing Common Vulnerabilities and Exposures (CVE)Â list. Hereâs perhaps a more relevant subset of these. Suddenly, we do not feel weâre standing on the backs of giants, but rather weâre getting piggybacked by some people on stilts.
Okay, that part was important, because we have to have a sense that we could be compromised to appreciate the (low-probability but high impact) risk of a drive-by attack. Now letâs look at the anatomy of a drive-by attack.Â
Heimdal Security propose 9 steps, but Iâll try distill them here:
You, as a user, unwittingly browse a compromised or malicious website.
Malicious JavaScript files are downloaded on your system.
The browser runs the infected JavaScript files, which initiate a connection with an exploit server.
An exploit kit (hosted on the exploit server) probes your operating system, web browser, browser extensions, and other software such as your pdf reader or video player, for a range of known software vulnerabilities.
On finding a vulnerability, it uses it to gain access to your PCâs functions.
With elevated privileges it may proceed to download and execute additional malware.
Gif source.
The scariest part is that this took little to no user interaction, happened incredibly quickly, and happened without the user noticing anything.
Okay, now that weâre properly scared, we offer a couple of recommendations:
Donât use Flash. Get rid of it. Bin it. Now.
Use an established actively developed browser (for goodness sake, donât use IE) and always keep it up to date!
Review your browser extensions. Recognise each of them for the security dependency it is, and consider whether its utility really outweighs its risks. Keep them up to date!
Review your default viewers and players. Keep them up to date!
Before we wrap up, letâs look at a few drive-bys in the wild:
[2017] Issaquah, employee visited and opened a .pdf file that had been compromised on a grant coordination site run by a non-profit.
[2013] Dalai Lamaâs Chinese Site, automatically drops viruses on Windows and Macs by exploiting security bugs in Java software.
[2011] Amnesty International, relied on an Adobe Flash zero-day exploit.
Something Awesome
Okay, weâre starting to peel back the layers on the dangers of link clicking (or website visiting) and Iâm starting to get scared đ¨
Drive-By
The technique of having users connect to a server (just a link click or compromised website away) that checks for vulnerable client browsers, extensions and OSs and exploits them is known as a âdrive-byâ attack; presumably because you get it unknowingly as you drive by, though I more commonly associate the phrase with a hit-and-run mechanic which doesnât seem quite right. It is a well documented, and well resourced technique; there are commercially available exploit kits for performing this kind of attack. I will post again when I have read up more on this, but a preliminary look is far from comforting.
CSRF
The second technique Iâve found that goes beyond what Iâll call âmetadata theftâ is cross-site request forgery (CSRF). I believe this was actually covered in the website security seminar, which I unfortunately couldnât make... It is a simple but clever idea that exploits common authentication mechanisms and application architecture on the web. Essentially, it is just crafting an API call to another reputable service with which the user is currently authenticated. API calls are just http(s) requests so a link click or form submission is really all thatâs required. Iâll have more to report on this soon.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Something Awesome
Next stop, Quora.
Can I get hacked only by clicking on a link without downloading anything?
Okay, so if you look past the people flexing, thereâs actually some important points to take away from some of the answers here:Â
When you visit any webpage, you are downloading an HTML / CSS / JS / whateverelse file that gets stored temporarily in your computer.
Of course! Any web page is really a download. The web is essentially just downloading files from remote servers...
A payload can be delivered with or without user interaction but it does require you to come in contact with the code that will begin the exploitation process.Â
Well this seems about right. Browsing the internet may essentially just be be downloading files, but weâre going to have to try open the file for an exploit.
Some outdated browsers and add-ons can be exploited, otherwise itâll require an 0day.
Aye aye aye. I think what weâre getting at here, is that in some instances, a hacker can get there code to run without requiring an opportunistic user to try open their file.
The Dalai Lama's website was recently [?two years prior, 2013]Â hacked. After which any person visiting the Chinese section of the site got hacked - that included people who received and clicked on a link to that site.
Doesnât that just sound crazy? But I dug a little deeper and it checks out,Â
...malicious software that automatically drops viruses on computers running Microsoft Corpâs Windows and Apple Incâs Mac operating systems.
They infect machines by exploiting security bugs in Oracle Corpâs Java softwareÂ
Seems that some sort of Java 0day was being exploited.Â
Also love this term thrown around, âwater holingâ, for going after a place frequented by your target. No doubt someoneâs spear phishing in the watering hole.Â
Something Awesome
To click or not to click? Why link safety matters
This government backed article opens with the exact question I want answers to.
We often recommend that people âthink before they clickâ on links; or âclick with careâ â why is that?
Yes, why is that? Wouldnât I have to download a file, or enter some user input to be compromised in any way? Whatâs so dangerous about a link in itself? Surely there are some answers here. tldr; thereâs not.
âMalicious links are one of the most effective delivery methods for online scams and threats like malware and ransomwareâ
Okay... but how?
They then proceed to make a bunch of recommendations:
Hover over links to preview them before clicking.
Use URL expanders to preview minified links.
Google for resources instead of following links to them.
Yeah, okay. But really... I canât see myself using a URL expander if my machine was riddled with malware, let alone now. Then they come back with,
âIf compromised, not only will criminals have access to your private messages and information, your social media account can also be used to further spam messages to your contacts, circumventing many of the platformâs own protection mechanisms.â
BUT HOW DO I GET COMPROMISED?
âIf you click a link, always check the website you are on before you interact with it, provide any information or download software.â
Okay, so now itâs okay for me to click a link? As long as Iâm careful upon arriving at a spurious destination. I mean, this seems to make some sense, but why all the hype about not clicking links? Why not, âdonât download files or enter personal details on weird sitesâ?
Who Needs Buffer Overflows
This SO answer gave me a little missing perspective on buffer overflows, as I am still to work out exactly who would use them for what. So at the end of the day we can run arbitrary code on a given machine. Not something I want to do on my machine of course, as I could just as well write my own program to do it and execute it. However if we were remoting into another machine, and we had a malicious strain in our personality, we may feel empowered to be able to run arbitrary code on this machine, particularly with permissions that we are not otherwise granted.
Week 6 Lecture Musings
Morning Lecture
Good friends donât let other friends write their own cryptographic systems. Â -Richard (lecturing over Skype).
In the morning lecture we were introduced to wonderful world of buffer overflows. It boils down to a few things:
Low level programming languages let us do our own memory management, yay.
Memory is everything in computing, code and control is stored and read from memory much like the rest of our data.
No where is our data closer to our control than the stack
The stack is how the OS can comfortably swap between two processes (context switching). The current state of the process is stored in a frame on the stack, and when the process is ready to run again it is popped off.Â
A program which when writing to the stack, writes beyond it's stack frame, would be writing into the stack frame of the process that was interrupted before it... a stack frame which contains return addresses and all sorts of control data.
Evening Lecture
I couldn't attend the second lecture this week, but have found some great notes, thanks Andrew:Â https://featherbear.github.io/UNSW-COMP6441/blog/post/lec12/!Â
Seminars
The first seminar was on Website Security (whoops) and looked at XSS, SQL injection, and CSRF (no idea why cross is now a C and not an X, where's the consistency...). The second seminar was on crypto, (probably less for me to learn here as I did a thesis on crypto networks).
Block Ciphers
Looks like there was a bit of discussion about block ciphers.Â
Factors of Authentication
Oooh Iâve been waiting for this to come up since it came up in the Houdini case study. There are three types:
Something you know - ie password
Something you have - ie physical element
Something you are - ie biometrics
Andrew metions that theyâre all equivalent to something you know and that they all look the same once digitized. Thereâs also the question of whether a biometric fingerprint solution is any good because we canât change exploited fingerprints like we change passwords.
Week 6 Analysis Class
Okay, so weâve identified some threats... what would we recommend Australia do now, to prepare for the possibility of cyberwarfare threats? (Groups again).
As it turns out, itâs quite difficult to come up with 10 sound recommendations in 20 minutes, and so much the joy of this class was hearing the 10th recommendation of any group.
Background check everybody before giving them access to the internet
Segmentation of networks (okay, this is probably a #1 on any other list)
Headhunt potential hackers
Hire Russian hackers
Ditch the entire continent
Public security initiatives
Anyway, this is what we came up with going back to the drawing board:

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Week 6 Analysis Prewriting
Weâre entering cyber war with Russia, what should we be concerned about? My brainstorm:
Expect some large scale government directed attacks.
They may attempt political influence.
Social network attacks.
DoS of critical/financial infrastructure.
Destroy network infrastructure, including our transatlantic cables.
Attack our datacenters.
Company infiltration.
Bugging.
Spread of misinformation.
Good friends don't let other friends write their own cryptographic systems.
- Richard (lecturing over Skype)