{"id":122,"date":"2011-07-11T21:47:32","date_gmt":"2011-07-11T21:47:32","guid":{"rendered":"https:\/\/www.cores2.com\/blog\/?p=122"},"modified":"2011-07-11T21:47:32","modified_gmt":"2011-07-11T21:47:32","slug":"steganography-where-obfuscation-might-be-a-good-idea","status":"publish","type":"post","link":"https:\/\/www.cores2.com\/blog\/?p=122","title":{"rendered":"Steganography &#8211; where obfuscation might be a good idea!"},"content":{"rendered":"<p>Security through obscurity is one of the worst approaches someone might take when it comes to computer \/ network security. I&#8217;ve heard in real-world situations between students and professional\u00c2\u00a0programers\u00c2\u00a0say &#8220;Sure, the passwords are saved as plaintext, but the database table names are all obfuscated; no hacker will find them!&#8221;.\u00c2\u00a0Though I&#8217;m sure this isn&#8217;t the average case, it bothers me\u00c2\u00a0enormously that many\u00c2\u00a0universities\u00c2\u00a0and companies don&#8217;t do formal security training. Giving your programmers <a href=\"http:\/\/www.cc2e.com\/\">Code Complete<\/a> is a great idea, but I don&#8217;t think it&#8217;s enough &#8211; programmers have to have it beat into us that obfuscation is <strong>NOT<\/strong> a valid security approach!<\/p>\n<p>I won&#8217;t talk about how to fix this, there&#8217;s plenty of tools, academic resources, training programs, etc. to help programmers learn and improve their designs. What I will talk about is\u00c2\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Steganography\">steganography<\/a>. I heard some not-so-reputable\u00c2\u00a0sites such as 4Chan were encoding data and adding it to meta-data in images. At first I thought it was kind of silly; everyone could just open the file and see it&#8230; but then again, we live in the golden age of media-transfer on the web: who sees images on the web and thinks &#8220;Maybe there is something hidden in here&#8221; outside of what you actually <strong>see<\/strong>. Stenography is a method of obscuring data transmission by adding it through mediums one wouldn&#8217;t think acceptable for data. The GIF file format has an interesting structure such that there is a single or double byte pattern that declares the end of the file. If you put text after that, most image viewers and browsers would see the image and never report a corruption because nothing changed the formal structure; yet the hidden data is there and never seen by the image viewer.<\/p>\n<p>So, to learn more, I hid some data through several levels of encryption, obfuscation, and stenography. In the following steps we will be taking a funny GIF image, and we will follow the white rabbit down the hole to wonderland. (Pardon the cheesy quote, I had to, ha)<\/p>\n<ol>\n<li>\u00c2\u00a0<a href=\"https:\/\/www.cores2.com\/files\/find_me.gif\">Check out this funny GIF of some ninja-wrestling\u00c2\u00a0moves<\/a>; millions must exist on the web, and such technology is nothing new, dating back from the late-80s. You wouldn&#8217;t do\u00c2\u00a0anything\u00c2\u00a0with this file other than smirk, right? Well, lets dive in&#8230;<\/li>\n<li>Download the gif and open it in any <strong>text editor<\/strong>\u00c2\u00a0of your choice; notice at the end there is\u00c2\u00a0constant\u00c2\u00a0ASCII strings?<\/li>\n<li>Copy this string data (it&#8217;s a GnuPG message) and decrypt; password is &#8220;png&#8221;<\/li>\n<li>The result is a png file (change file extension if needed)<\/li>\n<li>Open png file, it is a multi-color QR code; if you attempt to decode it, you get junk data<\/li>\n<li>Individually process each color channel in RGB order, meaning do a QR decode on the red channel first, then green, and finally blue<\/li>\n<li>Put the QR decoded text together, you get a new GnuPG block; password is &#8220;steganography&#8221;<\/li>\n<li>This result is the final data, i.e. the original message that was encoded<\/li>\n<\/ol>\n<div>I&#8217;ll leave it up to the reader to find the quote &#8211; it&#8217;s somewhat applicable, and around 200 characters. This is actually one of the biggest down-sides of this multi-level approach I did: The deeper you go, the more bloated the size becomes. that 200 character ASCII text bloated to around<\/div>\n<p>So what I learned is there are some serious ways and methods of hiding data easily through obfuscation tied with true security (i.e. PGP encryption); though I can&#8217;t imagine any use for this and general stenography for industry-level products and services, this is 100%\u00c2\u00a0legitimate\u00c2\u00a0spy-level information\u00c2\u00a0transfer. Stuck in North Korea and need to send a secret message?\u00c2\u00a0Attach\u00c2\u00a0the encrypted data to an innocent picture that will get past the censures and tada! Secret 007 mission accomplished.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Security through obscurity is one of the worst approaches someone might take when it comes to computer \/ network security. I&#8217;ve heard in real-world situations between students and professional\u00c2\u00a0programers\u00c2\u00a0say &#8220;Sure, the passwords are saved as plaintext, but the database table &hellip; <a href=\"https:\/\/www.cores2.com\/blog\/?p=122\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-122","post","type-post","status-publish","format-standard","hentry","category-news_updates"],"_links":{"self":[{"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":0,"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cores2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}