Smart Contract Hacking Final Free Chapter - Hacking Games Via Bad Randomness Implementations On The Blockchain

Posted by KP-3မိသားစု |

This is our final free chapter in this smart contract hacking series, hopefully you enjoyed it, I am not sure what I am going to work on next, perhaps some malware analysis, reverse engineering or maybe some hacking in the cloud. 

We are currently in 4th quarter and slammed with work so I wouldn't expect any more posts or the full blockchain release till after that eases up.

If you have any questions or comments you can hit us up at: 

@ficti0n

http://cclabs.io 


Cryptographic Implementations and Predictable PRNGs

Within operations that require random values we generally need a form of randomness coupled with our algorithm. If we do not have sufficient randomness and large character sets, we would end up with cryptographic collisions or predictable values depending what we are doing. This Is often the case in video game operations and data security encryption schemes. For example, we do not want to create random values which are predictable and repeatable based on known values or controllable values. With controllable values an attacker could duplicate the value by reverse engineering how it was originally created and what that random seed is. Also, If the value is predictable within a game, we may be able to cheat the game by creating our own valid values that exploit the perceived randomness.

Now we are not going to deep dive into cracking cryptography or brute forcing hash values. First off it takes too much time and effort. Secondly because there are easier more efficient ways of tackling cryptographic issues. Lastly, we do not have time for rabbit holes in a week-long penetration test that require us to explore many other attack vectors. Wasting a whole week on cracking a single cryptographic issue would be a terrible and inefficient penetration test leaving the rest of the target vulnerable. This may be suitable for R&D or a CTF but not for a penetration test.  

What you need to understand is that certain functions often used as randomness on the blockchain is not suitable as a source of randomness. Additionally, understanding how things are implemented will get you much farther when it comes to cryptography then attacking it directly. You do not need to break NSA level encryption by attacking it directly. Instead you should concentrate on finding insecure implementations of these algorithms to get what you need.

Oracle padding attacks are a great example of this if you were in the hacking community back in the late 2000s. The padding attack relied on error messages based on padding within blocks to determine a way to decrypt them. This was a brilliant attack vector as you didn't need to understand deep cryptographic concepts to decrypt data blocks only how blocks work and how it was implemented.  With this knowledge you could leverage the flawed implementation to get the decrypted values.

On the blockchain there are a number of insecure functionality that developers like to use when implementing random values. Most of these are very bad ideas for reasons we will discuss below.  

For Example, the following non-exhaustive but often used list of values are not suitable for randomness within sensitive operations. Usage of these types of values for any sort of calculation is always suspect for closer review:

ü  Secret keys in private variables

ü  Block Timestamps

ü  Block Numbers

ü  Block Hash values

Why you ask? Well regardless of the data being set as private on the blockchain a private variable storage value is 100% readable on the blockchain. There are no secret values. These can be queried as you saw in the storage issues chapter. Also embedding hard coded values are certainly not private as they are in the source code which may be posted directly on the blockchain. Or could be reverse engineered out of the bytecode used to deploy the contract when the source code is not available. If you can get a hold of that value, then you can violate the security of that functionality.

Secondly do not rely on predictable values for randomness especially from block data sources. Block timestamps are controlled by miners which can aid in orchestrated attacks when used as a source of randomness. Also block numbers are easy to query and create predictable attacks when used in calculations, if internal functions are using a block number, they are all using the same PRNG. Finally, block hash values are terrible to use for randomness as only the last 256 block hash values on chain actually have a real value. Anything older than 256 is reduced to 0 meaning that every calculation will use the same value of 0. We will cover that in some of our examples.

This is not an exhaustive list but instead just a small portion of bad decisions for random values. There are plenty of other values which could be used within calculations as a random seed which are also predictable. It is always important to review the data used in these calculations when reviewing smart contract functionality. So, without the need of a PHD in cryptography you should easily discern that all of the above implementation examples are terrible for the inclusion of random data within cryptographic operations.

 

Simple BlockHash Example

Let's start out taking a look at a simple example of using a blockhash value with a blocknumber value. While a hash of a block might seem like a good idea as a random number there are numerous issues with it. Firstly, a blocknumber is a known value set by a miner that persists for a set length of time and can be queried and used in an attacker's similar algorithm to produce the same result and bypass controls. But there is also an underlying vulnerability to this approach when coupled with a blockchash which we will take a look at below.

Action Steps:

ü  Open up your terminal and launch ganache-cli

ü  Type out the code below into Remix

ü  Within the Deploy Environment section dropdown change the JavaScript VM to the web3 Provider option.

ü  Deploy the contract to ganache with the deploy button in Remix

 

 

1.    pragma solidity ^0.6.6;
2.   
3.    contract simpleVulnerableBlockHash {
4.           uint32 public block_number;
5.           bytes32 public myHash;
6.   
7.           function get_block_number() public  {   
8.                   block_number = uint32(block.number);
9.           }
10. 
11.  function set_hash() public{
12.                 myHash = bytes32(blockhash(block_number));
13.         }
14. 
15.  function wasteTime() public{
16.                 uint test = uint(block.number);
17.  }
18. }

 

The simple contract above is querying for the current block number in the get_block_number function on line 8 and storing it within a block_number variable created on line 4.  This is the current block number running on the blockchain.

Then we have a function on line 11 which takes the block number and uses it with the blockhash button to retrieve the blockhash and store it in the myHash variable.

 

BlockHash Vulnerability Walk and Talk:

 

Action Steps:

ü  Execute the get_block_number function

ü  Execute the set_hash function

ü  Check the block_number value

ü  Check the myHash value

ü  Execute the wasteTime function 256 times

ü  Execute the set_hash function

ü  Check your myHash Value

ü  What happened and what implications would this have on calculations your using this value with?

 

So, we have 2 variables of a block number and a block hash associated with that block number. What's the big deal. Well let's walk through this step by step and then play around with the remaining wasteTime function on line 15 to find out.

Starting out if we have the deployed contract and we execute the get_block_number function followed by the set_hash function we will get the following result when checking the block_number and myHash variables.

 


We see the blocknumber of 3 and then a hex value representing the block hash that starts with 0x995f. Now if we were to use this hash as a random value or within some algorithm to create a random value it might work depending what we were doing and the level of security required for the length of time we need it to be perceived as random for. It wouldn't be secure but maybe good enough for your operations.  However, a blockhash has a dark little secret a developer may not be aware of.  Block hashes in Ethereum have short term memory when it comes to blocks older than 256 from the current block.  

So, what happens when we calculate a block after a time lapse? Let's give that a try by executing the wasteTime button till we reach block 259.  Waste time sets a block value and discards it to enumerate blocks for us, it doesn't actually make any real changes. Normally blocks on the Ethereum network enumerate on their own every 30 seconds and we would simply just wait for 256 blocks, but we don't have traffic on our blockchain so we will enumerate it ourselves with wasteTime.

 


After we reach block 259 we execute the set_hash function again which will take block_number of 3 which is older than 256 blocks and get the hash. If you retrieve the myHash variable again after executing the set_hash function again it results in:

 


You will notice the myHash variable is now 0x000. because blocks older than 256 from the current block are not stored and result in a value of 0.  Having a predictable value of 0 in our random algorithm can very likely create a situation where it would be easy to recreate the random number to bypass or cheat functionality in the smart contract.


Video Walkthrough of Bad Randomness:




A classical terrible example is something similar to this.

1.  Function checkWinner() public payable { 
2.     If (blockhash(blockNumber) % 2 == 0) {
3.         Msg.sender.transfer(balance);
4.     }
5.  }

 

In the example above uses a blockhash function with a blockNumber variable within its calculation. The issue with this calculation is if that blockNumber variable is more than 256 blocks old it will return Zero and based on the calculation the user will win every single time.

All the attacker would need to do is play the game to create the blocknumber variable. Then the attacker would simply wait for 256 blocks to pass before checking if he has won the game. By doing this the attacker would guarantee a win. 

 

In order to see how this would work let's take a look at a simple game of chance that implements this concept.

Action Steps:

ü  Type out this code within remix

ü  Deploy the code using Ganache and Web3 options

ü  Try to locate the vulnerability within the code

ü  Try to exploit the vulnerability this code so that you are always the winner

1.  pragma solidity ^0.6.6;
2.   
3.  contract simpleVulnerableBlockHash {
4.      
5.      uint balance = 2 ether;
6.      mapping (address => uint) blockNumber;     
7.      bool public win; 
8.      
9.      constructor() public payable{
10.        require(msg.value >= 10 ether);
11.    }
12.    
13.    function get_block_number() internal  {   
14.        blockNumber[msg.sender] = uint(block.number);
15.    }
16.    
17.    function playGame() public payable {
18.        require (msg.value >= 1 ether);
19.        get_block_number();
20.    }
21.     
22.     
23.    function checkWinner() public payable { 
24.      if (uint(blockhash(blockNumber[msg.sender])) % 2 == 0) {
25.          win = true; 
26.             msg.sender.transfer(balance);
27.      }   else{
28.             win = false;
29.         }
30.    }
31.    
32.}

 After trying to exploit this vulnerability yourself review the following video which walks you through the code and how to exploit it.

Video Walkthrough of Attacking The Game:



 

Preventing Randomness Summary

The best way to prevent these issues is to avoid on chain predictable values or secret values as your seed to operations and calculations.  We can do this with trusted external Oracles.  Oracles are external data sources that your contract can use when it needs random values or trusted data.  There are projects that specifically solve this problem for example ChainLink which has networks of Oracle nodes that handle data queries and provide back trusted verified data including random numbers.  A simple example for using Chainlink for a random number is found at the following link:

https://docs.chain.link/docs/get-a-random-number

It is always a good idea to avoid on chain secret data or block related information when performing any sort of sensitive operation and instead utilize an Oracle.  

 

Bad Randomness References

https://docs.chain.link/docs/get-a-random-number

https://nvd.nist.gov/vuln/detail/CVE-2018-14715

Related links


Content Marketing: Leveraging Valuable Content to Drive Business Growth

Posted by KP-3မိသားစု |

Content marketing is a strategic approach in marketing that entails the creation and distribution of compelling, relevant, and valuable content to capture audience attention, stimulate customer engagement, and eventually drive profitable customer action. This article delves into the realm of content marketing, exploring the following key aspects:

  • The Essence of Content Marketing
  • The Role of Content Marketing in Business Growth
  • Crafting Effective Content Marketing Strategies
  • Measuring Content Marketing Success
  • Staying Ahead: Trends in Content Marketing
What is Content Marketing?

Content marketing is a strategic marketing approach centered around creating and sharing valuable, engaging, and relevant content to captivate and retain a clearly defined audience, with the primary goal of driving profitable customer actions.

Content marketing hinges on the notion that creating and disseminating engaging content can help businesses attract and retain a clearly defined audience, ultimately prompting them to take profitable actions such as making purchases or utilizing services. This approach contrasts with traditional advertising methods that often involve directly pitching products or services. Instead, content marketing focuses on providing valuable information and insights that align with the interests and pain points of the target audience.

How Can Content Marketing Drive Business Growth?

Enhanced Brand Awareness: By creating and sharing high-quality content, businesses can position themselves as thought leaders and establish brand trust, leading to increased brand awareness and recognition.

For instance, a study conducted by Demand Metric revealed that content marketing generates 3X more leads than traditional outbound marketing, highlighting the potential of content marketing in boosting brand visibility.

Lead Generation and Nurturing: Compelling content can serve as a magnet for attracting qualified leads. By providing valuable content that resonates with the audience, businesses can nurture these leads, fostering relationships that often lead to sales conversions.

A survey conducted by the Content Marketing Institute indicates that 86% of B2C marketers and 91% of B2B marketers rely on content marketing to generate leads.

Improved Customer Engagement: Creating interactive and engaging content fosters deeper customer engagement, contributing to a more loyal customer base.

According to a report by the Content Marketing Institute and MarketingProfs, 78% of consumers feel more connected to brands that create custom content.

Strengthened SEO Performance: High-quality content optimized for relevant keywords can improve a business's search engine ranking, leading to increased organic traffic.

HubSpot's research shows that businesses that prioritize blogging are 13X more likely to experience positive ROI.

Cost-Effective Marketing Strategy: In comparison to traditional advertising channels, content marketing offers a cost-effective avenue for reaching and engaging potential customers and consistently improving ROI.

Crafting Effective Content Marketing Strategies
  1. Understanding the Target Audience: In-depth knowledge of the target audience, their needs, preferences, and pain points is paramount.

  2. Setting Clear Content Objectives: Clearly defined content goals drive strategy development and measurement efforts.

  3. Content Creation and Curation: Developing high-quality, engaging content that resonates with the audience and aligns with content objectives.

  4. Diversifying Content Formats: Employing a mix of content formats (e.g., infographics, videos, blog posts, podcasts) to appeal to diverse audience preferences and maximize engagement.

  5. Effective Content Distribution: Leveraging various channels (e.g., social media, email, paid advertising) to reach and engage the target audience.

  6. Content Optimization for SEO: Optimizing content with relevant keywords to improve organic traffic and search engine visibility.

  7. Performance Monitoring and Adaptation: Tracking content performance metrics (e.g., engagement, conversions) and continuously refining strategies based on data insights.

Measuring Content Marketing Success
  1. Website Traffic: Monitoring website traffic, including unique visitors, page views, and time spent on site, to assess content's ability to attract and retain audience attention.

  2. Engagement Metrics: Analyzing engagement metrics such as likes, comments, shares, and click-through rates to gauge audience interest and interaction with content.

  3. Lead Generation and Conversion Rates: Evaluating the number of leads generated and their conversion rates into paying customers to assess content's impact on business outcomes.

  4. Brand Awareness and Reputation: Conducting brand awareness surveys and monitoring online sentiment to measure the impact of content marketing on brand recognition, perception, and reputation.

  5. SEO Performance: Tracking keyword rankings, organic traffic, and search engine visibility to assess content's impact on website visibility and organic growth.

Staying Ahead: Trends in Content Marketing
  1. Interactive and Immersive Content: The integration of interactive elements (e.g., quizzes, polls, augmented reality) enhances engagement and provides a personalized experience for audiences.

  2. Visual Storytelling: The use of visuals such as videos, infographics, and images to convey messages and engage audiences more effectively.

  3. User-Generated Content (UGC): Encouraging and leveraging content created by customers to foster authenticity, build brand loyalty, and expand reach.

  4. Artificial Intelligence (AI) and Automation: Utilization of AI-powered tools for content creation, personalization, and content performance analysis, improving efficiency and effectiveness.

  5. Data-Driven Content Marketing: Employing data analytics to understand audience preferences, optimize content performance, and make data-driven decisions to enhance content marketing strategies.

--
You received this message because you are subscribed to the Google Groups "Broadcaster" group.
To unsubscribe from this group and stop receiving emails from it, send an email to broadcaster-news+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/broadcaster-news/f8ed0f37-9b53-44e6-9bbd-3df32174549fn%40googlegroups.com.

BEST PASSWORD MANAGERS FOR IOS

Posted by KP-3မိသားစု |

As I said, Apple's iOS is also prone to cyber attacks, so you can use some of the best password managers for iOS to secure your online accounts.

BEST PASSWORD MANAGERS FOR IOS

Here I have streamlined few of the best password managers for iOS including Keeper, OneSafe, Enpass, mSecure, LastPass, RoboForm, SplashID Safe and LoginBox Pro.

1. ONESAFE PASSWORD MANAGER (CROSS-PLATFORM)

OneSafe is one of the best Password Manager apps for iOS devices that lets you store not only your accounts' passwords but also sensitive documents, credit card details, photos, and more.
OneSafe password manager app for iOS encrypts your data behind a master password, with AES-256 encryption — the highest level available on mobile — and Touch ID. There is also an option for additional passwords for given folders.
OneSafe password manager for iOS also offers an in-app browser that supports autofill of logins, so that you don't need to enter your login details every time.
Besides this, OneSafe also provides advanced security for your accounts' passwords with features like auto-lock, intrusion detection, self-destruct mode, decoy safe and double protection.
Download OneSafe Password Manager: iOS | Mac | Android | Windows

2. SPLASHID SAFE PASSWORD MANAGER (CROSS-PLATFORM)

SplashID Safe is one of the oldest and best password management tools for iOS that allows users to securely store their login data and other sensitive information in an encrypted record.
All your information, including website logins, credit card and social security data, photos and file attachments, are protected with 256-bit encryption.
SplashID Safe Password Manager app for iOS also provides web autofill option, meaning you will not have to bother copy-pasting your passwords in login.
The free version of SplashID Safe app comes with basic record storage functionality, though you can opt for premium subscriptions that provide cross-device syncing among other premium features.
Download SplashID Safe Password Manager: Windows and Mac | iOS | Android

3. LOGIN BOX PRO PASSWORD MANAGER

LoginBox Pro is another great password manager app for iOS devices. The app provides a single tap login to any website you visit, making the password manager app as the safest and fastest way to sign in to password-protected internet sites.
LoginBox Password Manager app for iOS combines a password manager as well as a browser.
From the moment you download it, all your login actions, including entering information, tapping buttons, checking boxes, or answering security questions, automatically completes by the login box Password Manager app.
For security, the login box Password Manager app uses hardware-accelerated AES encryption and passcode to encrypt your data and save it on your device itself.
Download LoginBox Password Manager: iOS | Android
More information

  1. Pentest Tools Linux
  2. Hacker Tools
  3. Pentest Tools
  4. Hack Tools For Pc
  5. Hack Tools Github
  6. Hacker Search Tools
  7. Pentest Tools For Ubuntu
  8. Hackrf Tools
  9. What Are Hacking Tools
  10. Hack Tools Mac
  11. Blackhat Hacker Tools
  12. Pentest Tools Review
  13. Hacking Tools For Kali Linux
  14. Hacker Tools 2019
  15. Pentest Box Tools Download
  16. Hacking Tools Software
  17. New Hack Tools
  18. Hack Tools Pc
  19. Beginner Hacker Tools
  20. Hack Tools Pc
  21. Physical Pentest Tools
  22. Pentest Tools Find Subdomains
  23. Hack Tools
  24. Physical Pentest Tools
  25. Hack Tools For Mac
  26. Pentest Tools
  27. Pentest Tools For Windows
  28. Hackrf Tools
  29. Hacking Tools Download
  30. Hacking Tools Pc
  31. Hack Tools Mac
  32. Hacker Tool Kit
  33. Hacker Tools Linux
  34. Hacking Tools For Windows 7
  35. Free Pentest Tools For Windows
  36. New Hack Tools
  37. Nsa Hacker Tools
  38. Hak5 Tools
  39. Hack Website Online Tool
  40. Pentest Tools Open Source
  41. Hack App
  42. Hacker Tools Github
  43. Pentest Tools Android
  44. Pentest Tools Subdomain
  45. Hacking Tools Usb
  46. Tools Used For Hacking
  47. Pentest Tools Free
  48. Hacker Tool Kit
  49. Hacker Techniques Tools And Incident Handling
  50. Hacker Tools Apk
  51. Pentest Tools Linux
  52. Hacking Tools For Mac
  53. Underground Hacker Sites
  54. Hacker Tools For Ios
  55. Hack Tools
  56. Hack Tools For Windows
  57. Hacker Search Tools
  58. Hacker Tools Free Download
  59. Pentest Tools List
  60. Hacks And Tools
  61. Hacking Tools For Windows Free Download
  62. Computer Hacker
  63. Tools 4 Hack
  64. Pentest Tools List
  65. Hacking Tools Kit
  66. Hack Apps
  67. Best Hacking Tools 2020
  68. Top Pentest Tools
  69. Pentest Tools Online
  70. Hacker Tools
  71. Hacking Tools For Pc
  72. Hacker Tools Mac
  73. Hacks And Tools
  74. Hacker Tools For Ios
  75. Pentest Tools Free
  76. Hacking Tools For Games
  77. Hack Apps
  78. Hacking Tools 2019
  79. How To Make Hacking Tools
  80. Game Hacking
  81. Hak5 Tools
  82. Hacking Tools For Windows 7
  83. Pentest Tools Framework
  84. Easy Hack Tools
  85. Hacker Techniques Tools And Incident Handling
  86. Growth Hacker Tools
  87. Black Hat Hacker Tools
  88. Hacker Tools Github
  89. Hack Tools For Pc
  90. Hack Tools
  91. Hak5 Tools
  92. Pentest Tools For Ubuntu
  93. Hacker Techniques Tools And Incident Handling
  94. Hacking Tools For Pc
  95. Pentest Tools Bluekeep