Nixu Ltd is an information security consulting company from Finland. When searching a specialist to work as a penetration tester some weeks ago, they got an idea. The company told about the opening in their blog: a certain webpage contains a password, everyone finding that password is going to be invited to round 2, the interviews.
To company's surprise, there was over 200,000 tries to hack the page, from 66 countries. A total of 19 people succeeded to find the password, 12 of them are now going to be invited to be interviewed (7 declined).
The whole recruiting campaign was only in Finnish because the new penetration tester has to be a native Finnish speaker. However, due to extensive international interest, the company published the solution also in English in their blog.
The solution, for those interested:
Kari
To company's surprise, there was over 200,000 tries to hack the page, from 66 countries. A total of 19 people succeeded to find the password, 12 of them are now going to be invited to be interviewed (7 declined).
The whole recruiting campaign was only in Finnish because the new penetration tester has to be a native Finnish speaker. However, due to extensive international interest, the company published the solution also in English in their blog.
The solution, for those interested:
(Näin Nixun haaste ratkesi - TigerTeam - suomalainen tietoturvablogi)The browser starts by fetching a simple JavaScript from r.php without parameters. Typing the script URL in the location bar causes the user’s IP to be banned as the script contains a JavaScript comment that also can be interpreted as an HTML meta redirect. The ban can be removed by visiting the base64 encoded address hidden in the source code of the “403 Forbidden” page. The first script does a few simple loops and calculations to fetch the next script.
Every script except the first one can be fetched only once and this needs to be done within a short timeframe. The scripts are dynamically generated and different every time.
The next script contains xor-encrypted code to get the script of the next phase. This script sends the browser local time in the rand-parameter to the server.
The first two scripts can be bypassed e.g. by using a proxy tool (Burp etc.) in order to directly fetch the last phase script. This script implements an obfuscated stack-based virtual machine processing the byte-code which in turn does the actual validation of the password.
The virtual machine contains an embedded time-check comparing the local time into the timestamp sent to the server during the second phase. In case the local time differs too much from the expected time, the bytecode execution is disrupted. The password is converted into a base-63 number system and the resulting number is compared to a known value.
During the first week the password was aeIrfYh and then it was changed to dEys56_.
Congratulations to all who were able to solve the puzzle!
Kari
My Computer
- Computer type
- Laptop
- Computer Manufacturer/Model Number
- HP ENVY 17-1150eg
- OS
- Windows 10 Pro x64 EN-GB
- CPU
- 1.6 GHz Intel Core i7-720QM Processor
- Memory
- 6 GB
- Graphics Card(s)
- ATI Mobility Radeon HD 5850 Graphics
- Sound Card
- Beats sound system with integrated subwoofer
- Monitor(s) Displays
- 17" laptop display, 22" LED and 32" Full HD TV through HDMI
- Screen Resolution
- 1600*900 (1), 1920*1080 (2&3)
- Hard Drives
- Internal: 2 x 500 GB SATA Hard Disk Drive 7200 rpm
External: 2TB for backups, 3TB USB3 network drive for media
- Cooling
- As Envy runs a bit warm, I have it on a Cooler Master pad
- Keyboard
- Logitech diNovo Media Desktop Laser (bluetooth)
- Mouse
- Logitech Performance Mouse MX
- Internet Speed
- 50/10 Mbps VDSL
- Antivirus
- Windows Defender 4.3.9431.0
- Browser
- Maxthon 3.5.2., IE11