<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Chakraborty Software</title><link>http://www.chakraborty.ch</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheShivling" /><description>Information Security Consulting Services</description><language>en</language><lastBuildDate>Fri, 06 Aug 2010 11:43:10 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.0.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheShivling" /><feedburner:info uri="theshivling" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TheShivling</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Getting Started in Security</title><link>http://feedproxy.google.com/~r/TheShivling/~3/Rm0juiguhuQ/</link><category>Organization</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Thu, 05 Aug 2010 03:27:21 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=199</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I&#8217;ve seen a few &#8220;how do I get started in security?&#8221; posts online recently.  This is a running attempt to put together an answer.  Note that a lot of these are from my subjective experience.  They may not work for you.  Other people may also tell you additional, or conflicting information.  Do your own research, draw your own conclusions.</p>
<p>This is also not a laundry list of what you should learn, check off, and put on your resume &#8212; but a bunch of topics to consider gaining some degree of familiarity in.  Many of these I&#8217;m by no means an expert in, but I&#8217;m at least familiar with the concepts and have the basic understanding needed to figure them out and how they apply to my job.</p>
<h1><span style="font-weight: normal;">The Technical Basics</span></h1>
<p>You can&#8217;t learn security unless you&#8217;re familiar with the technology it deals with.  Learn the fundamentals.   Here is a <strong>very</strong> incomplete list.  You will never be able to do everything on it, at least not in depth.</p>
<p>It&#8217;s only fair to note that I come from an operations / architecture background, and that my primary experience is in network and systems security, plus authentication and cryptography.  Draw your own conclusions.</p>
<p><strong>Operating Systems</strong></p>
<p>Installation and management (systems administration).  My tip:  Start with one of the *BSDs (<a href="http://www.openbsd.org" target="_blank">OpenBSD</a>, <a href="http://www.freebsd.org" target="_blank">FreeBSD</a>, <a href="http://www.netbsd.org" target="_blank">NetBSD</a>) and Linux (any distro &#8212; what&#8217;s important is figuring out how to use the command line, what files are where, etc.), then Windows.  Set up a bunch of virtual machines (using <a href="http://www.virtualbox.org/" target="_blank">VMWare</a> or <a href="http://www.virtualbox.org/" target="_blank">Virtual Box</a> or equivalent).  A lot of companies use Solaris (get a copy of <a href="http://en.wikipedia.org/wiki/OpenSolaris" target="_blank">OpenSolaris</a> and play with it) and AIX, although you&#8217;re not likely to get access to many of the enterprise-level software they use.  Learn systems administration, buy a good UNIX book.  Learn about jails / chroot and virtual servers.  Understand Windows Group Policy Objects (GPOs).  What is a kernel?  How does an operating system&#8217;s boot sequence work?  Where are logfiles kept, what formats are they in, and how do you configure system and application logging?</p>
<p><strong>Coding / Programming</strong></p>
<p>Scripting and programming.  UNIX shell scripting, Perl, C, C++, Java, Python, VB.Net, anything.  I was never good at much of this beyond very basic scripting, and that sucks.  If you go into any kind of either operations or investigation work, you&#8217;ll need this.  PHP, ASP, HTML and other high-level &#8220;languages&#8221; also help.  Understand the difference between compiled and interpreted, low-level vs. high-level languages.</p>
<p><strong>Networking</strong></p>
<p>Understand subnets and know how to calculate network masks.  Learn what routers, switches, and hubs are.  Know the basics of wired and wireless data networking.  Understand how different operating systems and applications deal with networks.  Learn the OSI model.  What are router ACLs?  VLANs?  Know how MAC addresses work</p>
<p><strong>Network Security</strong></p>
<p>What is a firewall and how is it different from a proxy server?  What is a packet filter?  Download something like <a href="http://www.m0n0.ch/wall" target="_blank">M0n0wall</a> or <a href="http://pfsense.org/" target="_blank">pfSense</a> and set it up.  Buy a hub and learn to sniff packets with tcpdump and Wireshark.  Play with <a href="http://netcat.sourceforge.net/" target="_blank">Netcat</a> and get two Netcat sessions talking to each other.  Understand <a href="http://nmap.org/" target="_blank">NMAP</a> and how it works.  Learn what load balancers, reverse proxies, IDS and IPS do and how they work.  What is host-based vs. network-based IDS?</p>
<p><strong>Applications</strong></p>
<p>Set up <a href="http://www.apache.org" target="_blank">Apache </a>and IIS.  Set up <a href="http://www.mysql.com/" target="_blank">MySQL</a>, Microsoft SQL Server, or another relational database, and install multiple databases in a single instance.  How does ODBC work?  Set up a DNS server and learn about DNSSEC.  Set up an SMTP server and get it sending and receiving mails.  Learn about POP, IMAP, SMTP, Exchange, and their secure variants.</p>
<p><strong>Authentication and Encryption</strong></p>
<p>How does LDAP work?  What is Kerberos, NTLM, PAM, SASL?  What are SSH/SFTP/FTPS, and can you get passwordless SSH working?  What is &#8216;salt&#8217;?   Learn how to use John the Ripper and other password crackers (e.g. cain, able).  What are rainbow tables?   Set up sudo.  What is RBAC and how does it work?  Why shadow passwords?  What are file/directory permissions and how are they configured?</p>
<p>Understand the difference between symmetric-key and public-key encryption.  What is SSL / TLS?  Can you set up <a href="http://www.openssl.org/" target="_blank">OpenSSL</a> and issue your own certificate?  What is x.509 and what are digital certificates?  What is a PKI, a smart card, a root certificate, a CRL?  What is a hash?  What are checksums?  Can you set up PGP/GPG?  What is IPSEC, and what are its different implementations?  Can you set up <a href="http://www.kame.net/" target="_blank">KAME</a> between two hosts?  What are cookies and how do they work / how can they be abused?  What is the difference between encryption, signing, and non-repudiation?</p>
<p><strong>Other Tools</strong></p>
<p>Download and play with <a href="http://www.backtrack-linux.org/" target="_blank">BackTrack</a> and learn some of its tools &#8212; Wireshark, Kismet, Metasploit, etc. &#8212; it also includes some of the applications I mention above.  Play with <a href="http://monkey.org/~dugsong/dsniff/" target="_blank">dsniff </a>and at least familiarize yourself with what its various components do.</p>
<p><strong>Security / Cracking Techniques</strong></p>
<p>What is penetration testing?  White box / grey box / black box testing?  What is SQL injection?  How does XSS work?   What is a buffer overflow?  How does fuzz testing work?  ARP spoofing?  Session hijacking?  Privilege escalation?  How would you sniff network traffic (hint &#8212; see above)?  What are different kinds of keyloggers?  What is a virus, a trojan, a man-in-the-middle attack?</p>
<h1><span style="font-weight: normal;">Non-Technical Stuff</span></h1>
<p>A lot of security is based around laws and best practices.</p>
<p><strong>Laws</strong></p>
<p>You should be aware of legal issues surrounding the following, across various jurisdictions:</p>
<ul>
<li>Privacy</li>
<li>Data protection</li>
<li>Wire and communications fraud</li>
<li>Reporting obligations</li>
</ul>
<p>Related laws also concern the following</p>
<ul>
<li>Financial disclosure and due care (e.g. <a href="http://en.wikipedia.org/wiki/SOX_404_top-down_risk_assessment" target="_blank">SOX 404</a>)</li>
<li>Medical records (e.g. <a href="http://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act" target="_blank">HIPAA</a>)</li>
<li>Risk management (e.g. <a href="http://en.wikipedia.org/wiki/Basel_II" target="_blank">Basel II)</a></li>
<li>Safety and due care laws</li>
<li>Contract law</li>
</ul>
<p>There are a lot of laws that cover things like financial risk, operational risk and liability, intellectual property / secrecy rights, and rules of evidence.  They vary hugely between jurisdictions.  Keep this in mind.</p>
<p><strong>Standards and Best Practices</strong></p>
<p>The past years have seen an increasing degree of standardization and development of frameworks that may at least be useful as references.  A few examples with at least some security relevance:</p>
<ul>
<li><a href="http://www.isaca.org/Knowledge-Center/COBIT/Pages/Overview.aspx" target="_blank">COBIT</a></li>
<li><a href="http://www.itil-officialsite.com/home/home.asp" target="_blank">ITIL</a></li>
<li><a href="http://www.iso27001security.com/" target="_blank">ISO 27001</a></li>
<li><a href="http://www.hl7.org/" target="_blank">HL7</a> (medical)</li>
</ul>
<p>There are also innumerable organizational requirements and contractual standards (e.g. stock exchange security rules) that a company or group may have to follow.</p>
<p>My personal advice:  give yourself at least a basic idea what the big ones are (in your field and cross-disciplinary), and what they&#8217;re about, take what makes sense.</p>
<p><strong>Concepts</strong></p>
<p>What is risk?  What is a vulnerability?  What is a threat?  What is CIA and why is it important?  Figure out the differences between privacy and anonymity.  How is availability calculated?  What&#8217;s the difference between a policy, a procedure, and a process?  Who is responsible for what, where, when?</p>
<h1><span style="font-weight: normal;">Education and Networking</span></h1>
<p><strong>Courses and Certifications</strong></p>
<p><em>Technical</em></p>
<p>I took a few basic Cisco and systems administration classes &#8212; these were helpful, but I&#8217;m not a big fan of coursework.   Your mileage may vary.  In addition, I&#8217;ve done several individual sessions (for example, an NMAP &#8220;dojo&#8221; with the guy who wrote it) that were pretty helpful.  Most of my knowledge comes from experience and personal learning, though, so I can&#8217;t comment.  My general opinion:  great, if you can get someone to pay for it.</p>
<p><em>Degrees and Diplomas</em></p>
<p>Groups like <a href="http://www.isg.rhul.ac.uk/" target="_blank">Royal Holloway</a>, <a href="http://www.zisc.ethz.ch/" target="_blank">ETH Zurich</a>, and <a href="http://www.cerias.purdue.edu/" target="_blank">CERIAS</a> offer diploma courses in information security.  What do I know, I have an undergraduate degree in international relations from <a href="http://www.berkeley.edu" target="_blank">Cal</a>, and an <a href="http://www.insead.edu" target="_blank">MBA</a>.  Not directly academically useful to my career, but very interesting in terms of environment and exposure to people smarter than myself.  That should be your primary goal anyway.</p>
<p>The <a href="http://nsa.gov" target="_blank">NSA</a> has a <a href="http://www.nsa.gov/ia/academic_outreach/nat_cae/institutions.shtml" target="_blank">list of accredited schools with information security programs</a>.</p>
<p><em>Security-Specific</em></p>
<p>There exist tons of security courses, including <a href="http://sans.org/" target="_blank">SANS trainings</a>, <a href="https://www.isc2.org/" target="_blank">ISC²</a>, and others.   I passed the <a href="http://en.wikipedia.org/wiki/Certified_Information_Systems_Security_Professional" target="_blank">CISSP</a> exam, which was interesting-if-basic, and decided against throwing more money at certifications.  As with the technical courses above, my personal opinion is that if you can get someone to pay for it and to give you the time for it, superb.</p>
<p>Subjective view:  I would be suspicious of any employer that requires technical certification if you have any kind of professional experience.</p>
<p>Dan Guido (see under &#8220;Other Resources&#8221;) has a list of courses if that&#8217;s your thing.</p>
<p><strong>Conferences and Networking</strong></p>
<p>A lot of this field is about meeting people.  Plus, conferences can be a lot of fun (often you end up going out and getting drunk with a bunch of geeks, which is usually rewarding in itself, in addition to actually letting you watch good presentations.)</p>
<p>I&#8217;ve attended <a href="http://cansecwest.com/" target="_blank">http://cansecwest.com/</a> and <a href="http://www.cerias.purdue.edu/" target="_blank">CERIAS</a>, which are about as completely different as it gets in terms of focus</p>
<p>The downside is that a lot of the security area is about personalities &#8212; don&#8217;t let that discourage you.  Odds are you&#8217;ll never be a vulnerability research rock star with fawning hordes of nerd groupies, but that&#8217;s not the goal, right?</p>
<p>Meet people.  Again, meet people.  Get to know them.  Don&#8217;t worry so much about making friends with the &#8220;big names&#8221;, but familiarize yourself with the people in your company, in similar companies, in your city, and in your field.  I run a <a href="http://88.net/cgi-bin/mailman/listinfo/zog-security" target="_blank">small security mailing list</a>, originally designed to let IT security types in Switzerland get together for beers and pizza.  Do the same.  Stay in touch &#8212; these people are your network (and can be pretty cool to boot.)</p>
<p>Try to help others as much as you can &#8212; on forums, and on mailing lists.  In addition to being good karma, it often will help you learn for yourself.</p>
<p><strong>Books and Materials</strong></p>
<p><a href="http://www.rfc-editor.org/" target="_blank">RFCs </a>are your friends.   They&#8217;re written extremely densely, but the information is there.</p>
<p>Sign up for mailing lists, specifically in aspects that interest you (these are often flooded, so don&#8217;t try to take in everything at once.)  <a href="http://www.securityfocus.com/" target="_blank">Security Focus</a> is a good start.</p>
<p>Check a few pages regularly for information on security vulnerabilities.  <a href="http://secunia.com/" target="_blank">Secunia</a> and the <a href="http://www.f-secure.com/weblog/" target="_blank">F-Secure blog</a> are decent.</p>
<p><strong>Other Resources</strong></p>
<p>Dan Guido has a<a href="http://pentest.cryptocity.net/careers/information-security-careers-cheatsheet.html" target="_blank"> good writeup</a> of what to look for.  Look for pages written by people like Bruce Schneier, there are too many to even start listing.</p>
<h1><span style="font-weight: normal;">Career Decisions</span></h1>
<p><strong>What do you want to do?</strong></p>
<p><span style="font-weight: normal;">This is a tough one, seriously.</span></p>
<p><span style="font-weight: normal;">I wanted to be a UNIX systems administrator, back when tech was still fun.  Then, one day, someone dumped a firewall book on my desk, and said, &#8220;you&#8217;re the security expert, read up.  Congratulations.&#8221;  I bounced around in architecture, operations, compliance, policy, and training work, before ending up doing mainly incident response and risk management.    In fact, most of the people I know who are good at &#8220;security stuff&#8221; gradually evolved into their roles, rather than deciding early on &#8220;I want to do this or that&#8221;. </span></p>
<p><span style="font-weight: normal;">Of course, to be fair, nowadays a lot of the field is more structured.  Your mileage may vary.</span></p>
<p><span style="font-weight: normal;">This is a really arbitrary, artificial list.  A lot of the following fields overlap heavily:</span></p>
<p><em>Operations</em></p>
<p>Mainly network security and authentication.    Lots of systems administration.  Usually lots of relationships with OS- and application administrators.</p>
<p><em>Architecture / Development</em></p>
<p>Designing and creating stuff.  Can be &#8220;low-level&#8221; (i.e. network security architect, which firewall goes where), or &#8220;high-level&#8221; (designing policies and rules for putting various types of technologies to different kinds of use.)  Could also involve writing software or configuration files.</p>
<p><em>Research</em></p>
<p>Either academic, commercial, or individual (whee, lookit me, I h4x0r3d a web site).  You try to find new vulnerabilities, or work on new security technologies.</p>
<p><em>Policy and Compliance</em></p>
<p>The people who write the rules of what companies should do to ensure security.  Relevant to audit.  Generally high-level, deals with laws, best practices, and organizational-level risk management.</p>
<p>What I currently do (security risk assessment) is related to this &#8212; I work with projects and try to make sure their technology is reasonably secure and they follow all the rules, then suggest ways they could do things better, pre-emptively.</p>
<p><em>Penetration and Code Testing </em></p>
<p>What it sounds like &#8212; you get paid to try and break other people&#8217;s toys and tell them what they should do better.  Usually nowhere near as fun as it sounds like, as it mostly involves fairly strict limitations (e.g. you can&#8217;t take down banking systems, you have to follow strictly defined procedures) and lots of paperwork (letters of authorization, formatted reports, etc.)</p>
<p><em>Forensics, Investigation, and Incident Response</em></p>
<p>This is fun, but occasionally frightening and frustrating.  Its main component is following up on abuses of policies and laws.  This includes, but isn&#8217;t limited to:  attacks from inside and outside, harassment, violation of technical policies, industrial espionage countermeasures, and electronic fraud investigation.  Also deals with damage control from things like denial of service attacks or other things going wrong.</p>
<p>It tends to also involve cooperation with architecture and operations people, in terms of things like preventative or reactive patch management.  Warning:  may seriously impact your faith in human decency &#8212; from the management attitudes and legal techniques you deal with as much as the rancid child pornography you&#8217;re likely to be exposed to.</p>
<p><strong>Where do you want to work?</strong></p>
<p>Never forget that, in almost any security job, you&#8217;re a service provider whose job is to restrict what people do.</p>
<p>It&#8217;s important to figure out if you want to work for yourself (can be very difficult at first), as an employee, or as a contractor.</p>
<p>My experience is mainly in the following fields:</p>
<p><em>Financial Services</em></p>
<p>Banks pay well.  They&#8217;re among the biggest security consumers.  They tend to have access to lots of new technology and move pretty fast, but are also lots of management.  Can often be very personality-driven, usually more formal than other work environments.  Depends heavily on whether you work in private, retail, or investment banking, insurance, finance, or others.</p>
<p>Medical / Diagnostic</p>
<p>Much slower-moving than finance.  Heavily focused on QA (e.g. data integrity).  Usually lots of very smart people &#8212; security is comparatively new to these guys and heavily laws-driven.</p>
<p><em>Education</em></p>
<p>Stay away.  Seriously.  My only advice.  Feel free to draw your own conclusions, but in my career, it&#8217;s been the most political, ill-paid, big-fish-small-pond nastiness I&#8217;ve ever encountered.</p>
<p><em>Services / IT Products / Consulting</em></p>
<p>Usually reasonably paid &#8212; the advantage is that you&#8217;re working with other tech people.  The disadvantage is that, in most cases, your employer often takes a significant chunk of your paycheck.</p>
<p>I have no experience in the following:</p>
<p><em>Government / Military</em></p>
<p>Lots of money, salaries generally not that good, new technology but very strict rules.</p>
<p><em>Industrial</em></p>
<p><em>Commercial</em></p>
<p><em>Non-profit</em></p>
<p>&#8230;.and others.</p>
<p>Most importantly, some pieces of advice that apply to all jobs:</p>
<ul>
<li>Always try to talk directly to the manager who&#8217;ll be in charge of the group you&#8217;re applying to.  Going through HR is often a dead end.</li>
<li>Never ever lie on resumes.  Don&#8217;t be afraid to publicize yourself, though.</li>
<li>Avoid politics.</li>
<li>Never burn bridges.</li>
</ul>
<p>I hope this helps.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/Rm0juiguhuQ" height="1" width="1"/>]]></content:encoded><description>I&amp;#8217;ve seen a few &amp;#8220;how do I get started in security?&amp;#8221; posts online recently.  This is a running attempt to put together an answer.  Note that a lot of these are from my subjective experience.  They may not work for you.  Other people may also tell you additional, or conflicting information.  Do your own research, &lt;a href='http://www.chakraborty.ch/?p=199'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=199</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=199</feedburner:origLink></item><item><title>Hiding from Bentham?</title><link>http://feedproxy.google.com/~r/TheShivling/~3/k2xsMwh0tkc/</link><category>Privacy</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Wed, 04 Aug 2010 01:58:51 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=194</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A colleague recently brought up an interesting discussion &#8212; how to hide from Google?</p>
<p>Privacy and anonymity are good things.  Bruce Schneier has some great points  &#8211; they are <a href="http://www.schneier.com/blog/archives/2006/01/kevin_kelly_on.html" target="_blank">essential for democracy</a>, and absence of anonymity is <a href="http://www.schneier.com/blog/archives/2010/02/anonymity_and_t_3.html" target="_blank">ripe for other kinds of abuse</a>.</p>
<p>All arguments against online privacy and/or anonymity come down to the question, &#8220;what do you have to hide?&#8221; to which the only useful response is, &#8220;nothing, let me film you the next time you use the toilet&#8221;.</p>
<p>My first instinct is, &#8220;why bother&#8221;?  As others have pointed out, staying anonymous online is a myth.  Even if you disconnect yourself from Facebook, webmail accounts, and any support forums you might otherwise use, and religiously heed the dictum that you should <a href="http://www.google.com/images?hl=en&amp;source=imghp&amp;biw=1177&amp;bih=715&amp;q=drunk&amp;gbv=2&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=" target="_blank">never post anything anywhere online that you might not want someone to see</a>, a sufficiently motivated analyst would find what I would refer to as <em>second-</em> and <em>third-tier records</em>, such as credit card bills, bank accounts, social security numbers, driver&#8217;s license details, etc. &#8212; more than enough for most purposes.</p>
<p>Both privacy and anonymity are, at most, best-effort affairs.  So what is the motivation for this sort of research?  A few plausible scenarios:</p>
<ol>
<li>Identify theft (e.g. <em>constructive</em>, for financial or other gain, or <em>destructive</em>, for defamation/slander)</li>
<li>Targeted investigation (e.g. for a job, political office, or crime-related research, etc.)</li>
<li>Statistics (e.g. targeted marketing)</li>
<li>Trawling (e.g. to find instances of wrongdoing)</li>
<li>Other (e.g. digging up dirt, fun)</li>
</ol>
<p>I would guess that a vast majority of information collection falls into category 3, followed at a distance by category 4.  Category 3 is worrisome mainly if you disagree with it out of principle.  Fair enough. Growing technological capabilities of data cross-correlation systems allow for easy creation of entire profiles from otherwise disconnected bits of information.  The potential for abuse of such a holistic, instantly accessible set of information about you as an individual is immense.</p>
<p>Even in the &#8220;right&#8221; hands, such as law enforcement (depending on your point of view) and responsible marketing types working under a strong privacy policy, the temptation to misuse data is inevitable.  It is human nature to break rules, even in small ways &#8212; we are not automatons.  I won&#8217;t go into scenarios about what even a government agency, scrupulously following all laws to the letter, could do with instantaneous, 24/7 knowledge of what you do, where you are, and what you&#8217;re thinking (category 4, followed by category 2), let alone a criminal element with stolen data about you (categories 1 and 2). Just in the hands of advertisers alone, the potential for irritation is limitless.</p>
<p>So let&#8217;s say that, out of principle, you object to the collection of information in the course of routing activities like online searches and use of free webmail service.  I firmly believe that the best way for individuals to make the collection and correlation of information more difficult is to create as much entropy as is feasible.  You can&#8217;t make it impossible, but you can at least make it not as easy.</p>
<p>In addition to at least making an effort to <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=secure+facebook+profile" target="_blank">secure your Facebook profile</a> as much as possible, some basic points:</p>
<p>Use <a href="http://www.gnupg.org/" target="_blank">GPG</a> or <a href="http://www.pgp.com" target="_blank">PGP</a> for mail and files.  Most mail clients have easily available plugins.  <a href="http://pgp.mit.edu/" target="_blank">Make your key available</a>.</p>
<p>When using free services like (highly recommended, by the way) <a href="http://www.dropbox.com" target="_blank">Dropbox</a>, use something like <a href="http://en.wikipedia.org/wiki/PGPDisk" target="_blank">PGPdisk</a>.  You won&#8217;t be able to access it via the web interface, but it provides good security for files you share between computers.</p>
<p>Use SSL whenever you can.  Even if you don&#8217;t use a commercial ($$) certificate for your own web page, you&#8217;re just trying to encrypt traffic.  I recently made the mistake of accessing one of my (non-SSL) website accounts from a public wireless network, and only realized my mistake two seconds after logging in.  Whoops.  Password change time&#8230;</p>
<p>Use <a href="http://www.torproject.org" target="_blank">tor</a>, and the excellent Vidalia package (on the tor site).  Tools like the Firefox <a href="https://addons.mozilla.org/en-US/firefox/addon/2275/" target="_blank">torbutton</a> add-on make this a snap.</p>
<p>Tunnel things via SSH, and only use SSH for access to UNIX boxes.  Of course, you&#8217;re already doing this.</p>
<p>Search on <a href="http://www.googlesharing.net/" target="_blank">googlesharing</a> (assuming you trust Moxie Marlinspike more than you trust Google) and use any of the other anonymizing services out there.  If you run your own system, I can also recommend tools like <a href="www.jmarshall.com/tools/cgiproxy/" target="_blank">nph-proxy</a>.</p>
<p>And, of course, never post anything online you wouldn&#8217;t want someone else to see.</p>
<p>But again, full anonymity and privacy are illusory.  Someone who cares enough can always find out about you, <a href="http://xkcd.com/538/" target="_blank">given sufficient tools and determination</a>.  Enter a colleague&#8217;s attitude, which I find pretty interesting.</p>
<p>His point is that it&#8217;s best to establish patterns of regular usage, that most of what you do is utterly and completely uninteresting to anyone out there beyond statistical correlation with hundreds of millions of other users, and that you can&#8217;t realistically expect to hide 90% of your Internet activity anyway.  For those times when you really need to duck under cover, though, you should be technically astute enough to abandon those patterns you&#8217;ve established.</p>
<p>His logic, which I can&#8217;t refute, states that it&#8217;s better to have a <em>public persona</em>, which will provide plausible deniability of the few, specific instances when you really need privacy and anonymity, than to constantly attempt to hide everything you do.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/k2xsMwh0tkc" height="1" width="1"/>]]></content:encoded><description>A colleague recently brought up an interesting discussion &amp;#8212; how to hide from Google? Privacy and anonymity are good things.  Bruce Schneier has some great points  &amp;#8211; they are essential for democracy, and absence of anonymity is ripe for other kinds of abuse. All arguments against online privacy and/or anonymity come down to the question, &amp;#8220;what &lt;a href='http://www.chakraborty.ch/?p=194'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=194</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=194</feedburner:origLink></item><item><title>Evaluating Bespoke Trading Applications</title><link>http://feedproxy.google.com/~r/TheShivling/~3/ijuSIsgLDNw/</link><category>Forensics</category><category>Management</category><category>Politics</category><category>Privacy &amp; Security Law</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Wed, 28 Jul 2010 04:17:22 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=179</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A planned <a href="http://blogs.forbes.com/firewall/2010/07/26/talk-on-high-speed-trading-hacks-pulled-from-security-conference/" target="_blank">Black Hat talk on High-Frequency Trading</a> (HFT) vulnerabilities was recently pulled from the <a href="http://www.blackhat.com/" target="_blank">2010 Black Hat conference</a>, ostensibly at the request of one of the authors&#8217; clients who probably felt that the planned disclosures hit a little close to home.</p>
<p><a href="http://en.wikipedia.org/wiki/High-frequency_trading" target="_blank">HFT</a> is a hot topic in circles ranging from regulatory and compliance discussion forums, over smaller traders, to conspiracy wingnuts.  Despite the fact that it&#8217;s just one technological tool among many to give exchange participants an edge over competitors, I tend to side with the conspiracy theorists, especially insofar as it&#8217;s an approach to transactions that by its very definition gives an edge to larger market actors &#8212; thus skewing the idea of a &#8220;fair market&#8221;.  Various individuals have claimed that this goes so far as to allow participants to manipulate prices using fake orders, but I don&#8217;t know enough about trading technology to comment on this.</p>
<p>Due to the very technologically intricate and detailed nature of HFT platforms, very few people understand how they work &#8212; and overtaxed regulators and security &amp; compliance organizations thus are left in the dust when it comes to ensuring that such solutions do not present a security and operational risk, not just to the companies who run them, but to overall market stability.  Remember, complexity is almost always bad if you can&#8217;t reliably understand it with a reasonable grasp of the subject matter.</p>
<p>The article has one particular paragraph that rings very true:</p>
<p style="padding-left: 30px;"><em>While applications are combed for typical application vulnerabilities like SQL injection or cross-site scripting, they&#8217;re not examined for operational vulnerabilities: A rogue trader could, for instance, change a single variable to allow far more risky trades than a bank or its clients intend&#8211;the sort of trick that Société Générale trader Jerome Kerviel may have used to make unauthorized trades in 2008 that cost the firm $7 billion.</em></p>
<p>Yeah, basically.  Many of the people who use these toys are very bright autodidacts, creating customer tools for exotic, structured products.  Even off-the-shelf software is frequently written using what I like to call &#8220;functional programming&#8221; &#8212; i.e. a very smart person with a Visual Basic book coding a solution to an operational requirement without paying attention to best practices that may, in any case, be outside of the scope they care about.  Investment firm management is likely to turn a blind eye to even obvious flaws in such software, due to the fact that traders (a) bring in massive amounts of revenue and (b) are increasingly the only people who understand certain market types.</p>
<p>The rise in black pools and other off-exchange trading will only increase the latter phenomenon; I&#8217;ve seen trading floors where it was pretty common for one person to be responsible for a particular exotic product; frequently, this person might even have been the one who helped create the actual market.  Remember, you can trade pretty much anything, as long as you have a willing counterparty&#8230;</p>
<p>How do you deal with such issues as a security professional?  To many who are not trained in the black arts of financial transactions, much technological innovation in modern markets is the driving force behind an increased complexity that regulators cannot hope to oversee effectively.  Analyzing security issues in such tools also becomes difficult, even from the inside, even when a company is willing to implement controls &#8212; the line between legitimate exploitation of a weaker player&#8217;s market position and an actual security intrusion blurs to the point where traditional technical vulnerability analysis is no longer an option.</p>
<p>I don&#8217;t have a solution, beyond an innate distrust of anything I don&#8217;t understand in detail, but I believe that companies&#8217; willingness to reduce their exposure to security issues stemming from overly complex trading software is  more a philosophical than a policy or technical question &#8212; how far are we willing to go to exploit loopholes in the spirit of market regulation?  Are we willing to sacrifice potential high risk + high profit combinations in order to remain in more staid trading areas?</p>
<p>And most importantly, if management won&#8217;t listen, as a security guy, can you sufficiently CYA to avoid being caught up in a potential technical or regulatory failure of one of your employer&#8217;s systems that&#8217;s just too intricate to reliably review for risk?</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/ijuSIsgLDNw" height="1" width="1"/>]]></content:encoded><description>A planned Black Hat talk on High-Frequency Trading (HFT) vulnerabilities was recently pulled from the 2010 Black Hat conference, ostensibly at the request of one of the authors&amp;#8217; clients who probably felt that the planned disclosures hit a little close to home. HFT is a hot topic in circles ranging from regulatory and compliance discussion &lt;a href='http://www.chakraborty.ch/?p=179'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=179</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=179</feedburner:origLink></item><item><title>A Practical Guide For Defeating NMAP OS Fingerprinting</title><link>http://feedproxy.google.com/~r/TheShivling/~3/Iqa9C8K_h5c/</link><category>Forensics</category><category>Network Security</category><category>Pen Testing</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Tue, 22 Jun 2010 06:07:03 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=169</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div>
<p><em>This was on my old site before I moved. Maybe someone will find it interesting. </em></p>
<p><em>-John</em></p>
<p>David Barroso Berrueta</p>
<p><a href="http://voodoo.somoslopeor.com/" target="_top">http://voodoo.somoslopeor.com</a></p>
<p>&lt;<a href="mailto:tomac@somoslopeor.com">tomac@somoslopeor.com</a>&gt;</p>
<p>Copyright © 2003 David Barroso Berrueta. Palencia (Spain)</p>
<p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled &#8220;GNU Free Documentation License&#8221;.</p>
<p>Remote OS Fingerprinting is becoming more and more important, not only for security pen-testers,but for the black-hat. Just because Nmap is getting popularity as the tool for guessing which OS is running in a remote system, some security tools have been developed to fake Nmap in its OS Fingerprinting purpose. This paper describes different solutions to defeat Nmap and behave like another chosen operating system, as well as a demonstration on how can be accomplished.</p>
<hr size="2" />Table of Contents</p>
<p>1. <a href="http://www.zog.net/Docs/nmap.html#INTRODUCTION">Introduction</a></p>
<p>2. <a href="http://www.zog.net/Docs/nmap.html#REASONS">Reasons to hide your OS to the entire world</a></p>
<p>3. <a href="http://www.zog.net/Docs/nmap.html#NMAPTOOL">Nmap</a></p>
<p>4. <a href="http://www.zog.net/Docs/nmap.html#LSOLUTIONS">Linux solutions</a></p>
<p>4.1. <a href="http://www.zog.net/Docs/nmap.html#IPPERSONALITY">IP Personality</a></p>
<p>4.2. <a href="http://www.zog.net/Docs/nmap.html#STEALTH">Stealth patch</a></p>
<p>4.3. <a href="http://www.zog.net/Docs/nmap.html#FF">Fingerprint Fucker</a></p>
<p>4.4. <a href="http://www.zog.net/Docs/nmap.html#IPLOG">IPlog</a></p>
<p>5. <a href="http://www.zog.net/Docs/nmap.html#BSD">*BSD solutions</a></p>
<p>5.1. <a href="http://www.zog.net/Docs/nmap.html#BLACKHOLE">Blackhole</a></p>
<p>5.2. <a href="http://www.zog.net/Docs/nmap.html#FF2">Fingerprint Fucker</a></p>
<p>5.3. <a href="http://www.zog.net/Docs/nmap.html#OPENBSD">OpenBSD packet filter</a></p>
<p>5.4. <a href="http://www.zog.net/Docs/nmap.html#FREEBSD">FreeBSD TCP_DROP_SYNFIN</a></p>
<p>6. <a href="http://www.zog.net/Docs/nmap.html#GENERAL">General solutions</a></p>
<p>7. <a href="http://www.zog.net/Docs/nmap.html#PLAY">More things to play with</a></p>
<p>8. <a href="http://www.zog.net/Docs/nmap.html#CONCLUSION">Conclusion</a></p>
<p><a href="http://www.zog.net/Docs/nmap.html#AEN200">References</a></p>
<p>A. <a href="http://www.zog.net/Docs/nmap.html#GFDL">GNU Free Documentation License</a></p>
<p>A.1. <a href="http://www.zog.net/Docs/nmap.html#GFDL-0">PREAMBLE</a></p>
<p>A.2. <a href="http://www.zog.net/Docs/nmap.html#GFDL-1">APPLICABILITY AND DEFINITIONS</a></p>
<p>A.3. <a href="http://www.zog.net/Docs/nmap.html#GFDL-2">VERBATIM COPYING</a></p>
<p>A.4. <a href="http://www.zog.net/Docs/nmap.html#GFDL-3">COPYING IN QUANTITY</a></p>
<p>A.5. <a href="http://www.zog.net/Docs/nmap.html#GFDL-4">MODIFICATIONS</a></p>
<p>A.6. <a href="http://www.zog.net/Docs/nmap.html#GFDL-5">COMBINING DOCUMENTS</a></p>
<p>A.7. <a href="http://www.zog.net/Docs/nmap.html#GFDL-6">COLLECTIONS OF DOCUMENTS</a></p>
<p>A.8. <a href="http://www.zog.net/Docs/nmap.html#GFDL-7">AGGREGATION WITH INDEPENDENT WORKS</a></p>
<p>A.9. <a href="http://www.zog.net/Docs/nmap.html#GFDL-8">TRANSLATION</a></p>
<p>A.10. <a href="http://www.zog.net/Docs/nmap.html#GFDL-9">TERMINATION</a></p>
<p>A.11. <a href="http://www.zog.net/Docs/nmap.html#GFDL-10">FUTURE REVISIONS OF THIS LICENSE</a></p>
<p>A.12. <a href="http://www.zog.net/Docs/nmap.html#GFDL-ADDENDUM">ADDENDUM: How to use this License for your documents</a></p>
<p>1. Introduction</p>
<p>The purpose of this paper is to try to enumerate and briefly describe all applications and technics deployed for defeating Nmap OS Fingerprint, but in any case, security by obscurity is not good approach; it can be a good security measure but please take into account that is more important to have a tight security environment (patches, firewalls, ids, &#8230;) than hiding your OS.</p>
<p>Learning which Operating System is running in a remote system can be very valuable for both the pen-tester and the black-hat. Suppose that they find an open port in their (approved or not) penetration; knowing the OS makes easier to find and execute an exploit against that service, because often an exploit is OS version specific, and an exploit for Sendmail running on HP-UX won&#8217;t work for Sendmail running on AIX, or being more accurate, an AIX 4.3.3 exploit could not work in a system running 4.3.3 with the latest maintenance code applied. Fyodor (Nmap&#8217;s author) has written a detailed <a href="http://www.insecure.org/nmap/nmap-fingerprinting-article.html" target="_top">article</a> about remote OS Fingerprint, describing some different methods to successfully detect the remote OS, from the basic ones, to the more powerful ones.</p>
<p>In the beginning, guessing the remote OS was done grabbing the banner that a specific service was serving. For example, a typical telnet or FTP banner was always shown to the entire world, telling which OS was running, or if the banner has been changed or removed, some service commands could be executed to know the OS (remember the SYST in the FTP). Other basic ways to know the OS could be searching for HINFO entries in the DNS server, or trying to get information using snmp (lot of devices have enabled by default snmp access using the &#8216;public&#8217; community string). Even searching for the target company jobs posting in the Internet, dumpster diving looking for OS manuals, or social engineering are valid methods for trying to know the remote OS.</p>
<p>Then, some more advanced network solutions were deployed, taking advantage of each OS vendor TCP/IP stack implementation. The idea is to send some crafted packets to the remote OS and wait for its answer. Those packets are &#8220;nasty&#8221; packets, crafted with uncommon TCP options or with &#8216;impossible&#8217; options. Each OS has its own TCP/IP stack implementation, there isn&#8217;t a common stack implementation for every OS and this issue allows to create a classification of different OS and versions according to their answers. Playing around with those tricky packets is how remote OS Fingerprinting tools work; some of them using the TCP/IP protocol, and others using the ICMP protocol.</p>
<p>There is a paper about &#8216;<a href="http://www.usenix.org/publications/library/proceedings/sec2000/smart.html" target="_top">Defeating TCP/IP Stack Fingerprinting</a>&#8216; that describes in high level the design and implementation of a TCP/IP Stack fingerprint scrubber. That paper outlines why and how you can defeat TCP/IP OS Fingerprinting, so I am not going to talk too much about that; therefore I will focus on the solutions available out there.</p>
<hr size="2" />2. Reasons to hide your OS to the entire world</p>
<p>Perhaps you are wondering why do you want to spend your precious time changing your Linux kernel to hide your real OS version against Nmap &#8216;bad purposes&#8217; users. Maybe the following reasons can convince you:</p>
<ul>
<li>Revealing your OS makes things easier to find and successfully run an exploit against any of your devices.</li>
<li>Having and unpatched or antique OS version is not very convenient for your company prestige. Imagine that your company is a bank and some users notice that you are running an unpatched box. They won&#8217;t trust you any longer! In addition, these kind of &#8216;bad&#8217; news are always sent to the public opinion.</li>
<li>Knowing your OS can also become more dangerous, because people can guess which applications are you running in that OS (data inference). For example if your system is a MS Windows, and you are running a database, it&#8217;s highly likely that you are running MS-SQL.</li>
<li>It could be convenient for other software companies, to offer you a new OS environment (because they know which you are running).</li>
<li>And finally, privacy; nobody needs to know the systems you&#8217;ve got running.</li>
</ul>
<hr size="2" />3. Nmap</p>
<p><a href="http://www.insecure.org/" target="_top">Nmap</a> is one of such tools. It sends seven TCP/IP crafted packets (called tests) and waits for the answer. Results are checked against a database of known results (OS signatures database). This database is a text file that contains the result answered (signature) by each OS known. Thus, if the answer matches any of the entries in the database, we can guess that the remote OS is the same that the one in the database. Some Nmap packets are sent to an open port and the others to a closed port; depending on that results, the remote OS is guessed. A sample entry could be:</p>
<p>/* OS Comment. Yes, we want to be a Sega Dreamcast console */</p>
<p>Fingerprint Sega Dreamcast</p>
<p>/* ISN predictibilty; TD: time dependant */</p>
<p>TSeq(Class=TD%gcd=&lt;780%SI=&lt;14)</p>
<p>/* Test 1 result: SYN packet with some options to an open port. We got</p>
<p>a SYN+ACK, acknowledgment seq +1, window size 0x1d4c, don&#8217;t fragment</p>
<p>bit not activated, and only the MSS returned */</p>
<p>T1(DF=N%W=1D4C%ACK=S++%Flags=AS%Ops=M)</p>
<p>/* Test 2 result: Null packet with options to an open port. We got a</p>
<p>ACK+RST, acknowledgment seq, window size 0&#215;0, don&#8217;t fragment bit not</p>
<p>activated */</p>
<p>T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)</p>
<p>/* Test 3 result: SYN, FIN, URG, PSH with options to an open</p>
<p>port. We got a SYN+ACK, acknowledgment seq +1, window size 0x1d4c,</p>
<p>don&#8217;t fragment bit not activated, and only the MSS returned */</p>
<p>T3(Resp=Y%DF=N%W=1D4C%ACK=S++%Flags=AS%Ops=M)</p>
<p>/* Test 4 result: ACK packet to an open port. We got a RST,</p>
<p>acknowledgment seq, window size 0&#215;0, don&#8217;t fragment bit not activated */</p>
<p>T4(DF=N%W=0%ACK=S%Flags=R%Ops=)</p>
<p>/* Test 5 result: SYN with options to a closed port. We got a</p>
<p>ACK+RST, acknowledgment seq, window size 0&#215;0, don&#8217;t fragment bit not</p>
<p>activated */</p>
<p>T5(DF=N%W=0%ACK=S%Flags=AR%Ops=)</p>
<p>/* Test 6 result: ACK with options to a closed port. We got a RST,</p>
<p>acknowledgment seq, window size 0&#215;0, don&#8217;t fragment bit not activated */</p>
<p>T6(DF=N%W=0%ACK=S%Flags=R%Ops=)</p>
<p>/* Test 7 result: FIN, PSH, URG with options to a closed port. We</p>
<p>got a ACK+RST, acknowledgment seq+1, window size 0&#215;0, don&#8217;t fragment</p>
<p>bit not activated */</p>
<p>T7(DF=N%W=0%ACK=S++%Flags=AR%Ops=)</p>
<p>/* Port unreachable message result. No response */</p>
<p>PU(Resp=N)</p>
<p>Then, if we want to defeat Nmap and tell the attacker that we are running a different operating system, we only need to fake the responses to the Nmap tests. The solution that is going to describe is only valid for defeating Nmap and not other remote OS Fingerprinting tools. In the <a href="http://www.zog.net/Docs/nmap.html#CONCLUSION">Conclusion</a> section, other tools will be mentioned, as well as some recommendations for the pen-tester and/or the attacker.</p>
<hr size="2" />4. Linux solutions</p>
<p>Methods to defeat Nmap OS Fingerprinting in Linux are written as kernel modules, or at least, as patches to the Linux kernel. The reason is that if the aim is to change Linux TCP/IP stack behavior, and if we want to achieve it, we need to do it in the kernel layer.</p>
<p>Three kernel module solutions are going to be described, all of them independent from the Linux kernel tree; you have to download them and patch your kernel to add the feature. The first one requires netfilter enabled in your kernel (what I think it&#8217;s a must if you want to start to have a secure system), but the other two don&#8217;t.</p>
<hr size="2" />4.1. IP Personality</p>
<p>The first and probably, best option is <a href="http://ippersonality.sourceforge.net/" target="_top">IP Personality</a>. It&#8217;s netfilter module (then, only available for 2.4 Linux kernels) that allows us to change the IP stack behavior and &#8216;personality&#8217;, having multiple network personalities depending on parameters that you can specify as an iptables rule. Actually, we can change the following options:</p>
<ul>
<li>TCP Initial Sequence Number (ISN)</li>
<li>TCP initial window size</li>
<li>TCP options (their types, values and order in the packet)</li>
<li>IP ID numbers</li>
<li>answers to some pathological TCP packets</li>
<li>answers to some UDP packets</li>
</ul>
<p>An IP Personality overall summary is that we can change the way we answer to some packets, and we can specify which packets we want to answer in such way (it could be depending on the source ip address, the destination port, or, and that&#8217;s we are going to use, those crafted packets coming from Nmap)</p>
<p>Installation is fairly straight forward and well explained in the INSTALL file provided by the package; for our test purposes, our test box is a stable Debian box running a 2.4.19 kernel. By default, IP Personality netfilter module is not available in latest kernel, so we need to patch our kernel sources. Patch for adding IP Personality feature to our netfilter core is available in the IP Personality site. We also need to patch the iptables command so that it can recognize our new feature available. Once the kernel is patched and compiled, we need to reboot our box just because the patch also modifies other netfilter files (the connection tracking).</p>
<p>Next step is include our iptables rules related to IP Personality in our working kernel. Before doing it, we run Nmap to check our current OS:</p>
<p># nmap (V. 3.10ALPHA4) scan initiated Wed Feb 19 20:26:52 2003 as: nmap -sS -O -oN nmap1.log 192.168.0.19</p>
<p>Interesting ports on 192.168.0.19:</p>
<p>(The 1597 ports scanned but not shown below are in state: closed)</p>
<p>Port State Service</p>
<p>22/tcp open ssh</p>
<p>25/tcp open smtp</p>
<p>80/tcp open http</p>
<p>143/tcp open imap2</p>
<p>Remote operating system guess: Linux Kernel 2.4.0 &#8211; 2.5.20</p>
<p>Uptime 106.832 days (since Tue Nov 5 00:29:33 2002)</p>
<p># Nmap run completed at Wed Feb 19 20:26:58 2003 &#8212; 1 IP address (1 host up) scanned in 7.957 seconds</p>
<p>Now, we can reboot to run our new patched kernel and add the iptables rules needed to fake Nmap OS guess:</p>
<p>voodoo:~/ippersonality-20020819-2.4.19/samples#/usr/local/sbin/iptables -t mangle -A PREROUTING -s 192.168.0.50 -d192.168.0.19 -j PERS &#8211;tweak dst &#8211;local &#8211;conf dreamcast.confi</p>
<p>voodoo:~/ippersonality-20020819-2.4.19/samples#/usr/local/sbin/iptables -t mangle -A OUTPUT -s 192.168.0.19 -d192.168.0.50 -j PERS &#8211;tweak src &#8211;local &#8211;conf dreamcast.conf</p>
<p>What we are doing with those filter rules is:</p>
<ul>
<li>The first one means that all packets coming from 192.168.0.50 (me) against 192.168.0.19 (server) have to be mangled and rewritten simulating a Dreamcast behavior. The PREROUTING chain is the one that can do that.</li>
<li>The second one means that all packets coming from 192.168.0.19 (server) against 192.168.0.50 (me) have to be mangled and rewritten simulating a Dreamcast behavior. As is a packet going out the server, the OUTPUT chain is the responsible for that.</li>
</ul>
<p>Checking our set-up:</p>
<p>voodoo:~/ippersonality-20020819-2.4.19/samples#/usr/local/sbin/iptables -L -t mangle</p>
<p>Chain PREROUTING (policy ACCEPT)</p>
<p>target prot opt source destination</p>
<p>PERS all 192.168.0.50 192.168.0.19 tweak:dst local id:Dreamcast</p>
<p>Chain INPUT (policy ACCEPT)</p>
<p>target prot opt source destination</p>
<p>Chain FORWARD (policy ACCEPT)</p>
<p>target prot opt source destination</p>
<p>Chain OUTPUT (policy ACCEPT)</p>
<p>target prot opt source destination</p>
<p>PERS all 192.168.0.19 192.168.0.50 tweak:src local id:Dreamcast</p>
<p>Chain POSTROUTING (policy ACCEPT)</p>
<p>target prot opt source destination</p>
<p>It&#8217;s time to see if Nmap can report that we are still running a Linux kernel 2.4.0-2.5.20 or perhaps we can find out that our OS has changed:</p>
<p># nmap (V. 3.10ALPHA4) scan initiated Wed Feb 19 21:49:18 2003 as: nmap -sS -O -oN nmap2.log 192.168.0.19</p>
<p>Interesting ports on 192.168.0.19:</p>
<p>(The 1597 ports scanned but not shown below are in state: closed)</p>
<p>Port State Service</p>
<p>22/tcp open ssh</p>
<p>25/tcp open smtp</p>
<p>80/tcp open http</p>
<p>143/tcp open imap2</p>
<p>Remote operating system guess: Sega Dreamcast</p>
<p># Nmap run completed at Wed Feb 19 21:49:23 2003 &#8212; 1 IP address (1 host up) scanned in 5.886 seconds</p>
<p>As you can see, we&#8217;ve fooled Nmap with our response. It&#8217;s easy to choose the OS we want to &#8216;run&#8217; in the Nmap OS fingerprint and tell IP Personality to behave like that chosen OS. Let&#8217;s take a look to the dreamcast.conf file that we&#8217;ve specified when adding our iptables rules:</p>
<p>/* Our new OS identification */</p>
<p>id &#8220;Dreamcast&#8221;;</p>
<p>/* only incoming packets will be mangled and TCP window sizes will not be changed*/</p>
<p>tcp {</p>
<p>incoming yes;</p>
<p>outgoing no;</p>
<p>max-window 32768;</p>
<p>}</p>
<p>/* We need to emulate the Dreamcast ISN time dependant generator; this can be done with the fixed-inc generator and a small increment */</p>
<p>tcp_isn {</p>
<p>type fixed-inc 2;</p>
<p>initial-value random;</p>
<p>}</p>
<p>tcp_options {</p>
<p>keep-unknown yes;</p>
<p>keep-unused no;</p>
<p>isolated-packets yes;</p>
<p>code { copy(mss); }</p>
<p>}</p>
<p>/* now we have to follow nmap Dreamcast signature and answer like a Dreamcast */</p>
<p>tcp_decoy {</p>
<p>code {</p>
<p>if (option(mss)) { /* nmap has mss on all of its pkts */</p>
<p>set(df, 0);</p>
<p>if (listen) {</p>
<p>if (flags(syn&amp;ece)) { /* nmap test 1 */</p>
<p>set(win, 0x1D4C);</p>
<p>set(ack, this + 1);</p>
<p>set(flags, ack|syn);</p>
<p>insert(mss, this+1);</p>
<p>reply;</p>
<p>}</p>
<p>if (flags(null)) { /* nmap test 2 */</p>
<p>set(win, 0);</p>
<p>set(ack, this);</p>
<p>set(flags, ack|rst);</p>
<p>reply;</p>
<p>}</p>
<p>if (flags(syn&amp;fin&amp;urg&amp;push)) { /* nmap test 3 */</p>
<p>set(win, 0x1D4C);</p>
<p>set(ack, this + 1);</p>
<p>set(flags, ack|syn);</p>
<p>insert(mss, this+1);</p>
<p>reply;</p>
<p>}</p>
<p>if (ack(0) &amp;&amp; flags(ack) &amp;&amp; !flags(syn|push|urg|rst)) { /* nmap test 4 */</p>
<p>set(win, 0);</p>
<p>set(ack, this);</p>
<p>set(flags, rst);</p>
<p>reply;</p>
<p>}</p>
<p>} else {</p>
<p>set(win, 0);</p>
<p>if (flags(syn) &amp;&amp; !flags(ack)) { /* nmap test 5 */</p>
<p>set(ack, this);</p>
<p>set(flags, ack|rst);</p>
<p>reply;</p>
<p>}</p>
<p>if (ack(0) &amp;&amp; flags(ack) &amp;&amp; !flags(syn|push|urg|rst)) { /* nmap test 6 */</p>
<p>set(ack, this);</p>
<p>set(flags, rst);</p>
<p>reply;</p>
<p>}</p>
<p>if (flags(fin&amp;push&amp;urg)) { /* nmap test 7 */</p>
<p>set(ack, this + 1);</p>
<p>set(flags, ack|rst);</p>
<p>reply;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>/* No ICMP response for connections to closed UDP ports */</p>
<p>udp_unreach {</p>
<p>reply no;</p>
<p>df no;</p>
<p>max-len 56;</p>
<p>tos 0;</p>
<p>mangle-original {</p>
<p>ip-len 32;</p>
<p>ip-id same;</p>
<p>ip-csum zero;</p>
<p>udp-len 308;</p>
<p>udp-csum same;</p>
<p>udp-data same;</p>
<p>}</p>
<p>}</p>
<p>IP Personality is even more powerful. You can set up a Linux firewall/router that will change the answer of the hosts behind it. All your hosts protected by that Linux router can appear to be Sega Dreamcast consoles to any attacker!</p>
<p>There is also a great Nmap patch in the same site, named <a href="http://ippersonality.sourceforge.net/download.html" target="_top">osdet</a>, that allows us to OS Fingerprint an ip address (using Nmap engine), but with the fancy add-on that we can see the packets that are sent and their answer in tcpdump output format. Sometimes it&#8217;s very helpful and easier to understand the OS Fingerprint technique watching the packets flowing on our screen (all Nmap tests and its answers).</p>
<hr size="2" />4.2. Stealth patch</p>
<p>The solution that we are going to describe is the stealth patch, available from <a href="http://www.innu.org/~sean/" target="_top">Security Technologies</a>. It&#8217;s available as a kernel modules for Linux kernels 2.2.x (and in a near future for 2.4.x) ,and as a kernel patch (without module support for Linux kernel 2.4.x). We&#8217;re going to test the patch for the 2.4.19 kernel. When patched, two new options appear in our config file:</p>
<ul>
<li>IP: TCP Stack Options: option that we have to choose if want to use the stealth patch. If you select this option, it&#8217;s enable by default when you boot your system. To disable them, you need to execute:</li>
</ul>
<ul>
<li>echo 0 &gt; /proc/sys/net/ipv4/tcp_ignore_ack</li>
<li>echo 0 &gt; /proc/sys/net/ipv4/tcp_ignore_bogus</li>
<li>echo 0 &gt; /proc/sys/net/ipv4/tcp_ignore_synfin</li>
</ul>
<ul>
<li>Log all dropped packets: logs all packets with bad options.</li>
</ul>
<p>This patch simply discards the TCP/IP packets received with the following matches:</p>
<ol>
<li>Packets with both SYN and FIN activated (tcp_ignore_synfin) (QueSO probe).</li>
<li>Bogus Packets: if the TCP header has the res1 bit active (one of the reserved bits, then it&#8217;s a bogus packet) or it does not have any of the following activated: ACK, SYN, RST, FIN (Nmap test 2).</li>
<li>Packets with FIN, PUSH and URG activated (Nmap test 7).</li>
</ol>
<p>This is a simpler solution than the one described earlier. We cannot behave like any other Operating System, we just silently drop all &#8216;strange&#8217; packets that are supposed to be destinated to guess our OS, and hope that it will be enough to fool our attacker, or at least, make the things harder. These kernel modifications are easy to understand, and it would be relatively easy to add our own homemade &#8216;bad packets&#8217; detection.</p>
<hr size="2" />4.3. Fingerprint Fucker</p>
<p>Fingerprint Fucker is a kernel module available for Linux kernel 2.2.x which also can hide your OS and behave like another. It&#8217;s a kernel module which accepts parameters from the command line to configure the answer. By default, it simulates a VAX. There is also another file, called fing_parses.c, which parses a Nmap signature file and loads the Fingerprint Fucker module with the right parameters (when executing fing_parses, you have to specify which OS you want to emulate). It also waits for receiving a Nmap bogus packet, and then answers as you have configured. As far I&#8217;ve seen, only some Nmap tests are treated (T1, T2 and T7).</p>
<table style="width: 100%;" border="0" cellpadding="0">
<tbody>
<tr>
<td width="25" valign="top"></td>
<td valign="top">The code is not very stable. I loaded the module and in a few moments my Linux box got frozen.</td>
</tr>
</tbody>
</table>
<hr size="2" />4.4. IPlog</p>
<p><a href="http://ojnk.sourceforge.net/stuff/iplog.readme" target="_top">IPlog</a> is a TCP/IP logger that also detects some scans (XMAS, FIN, SYN, &#8230;). For our purposes, it has an option (-z) that allows to fool Nmap queries, and, although we can&#8217;t behave as other OS, we can completely fool Nmap when guessing remotely our OS.</p>
<p>Now it&#8217;s time to run IPlog to check the results:</p>
<p>voodoo:~#iplog -o -L -z -i eth0</p>
<p>The options are the following: -o (don&#8217;t fork and stay in foreground), -L (results to stdout), -z (fool Nmap), -i eth0 (listen to eth0).If I run a Nmap against the box, iplog starts to write a lot of information to stdout, about all connections made, and even which type of scanning is being performed; I&#8217;ve included only the relevant information about Nmap OS Fingerprinting in the iplog&#8217;s output:</p>
<p>Feb 20 13:20:54 TCP: SYN scan detected [ports 10082,1430,770,815,440,86,848,797,560,5998,...] from 192.168.0.50 [port 49047]</p>
<p>Feb 20 13:20:56 TCP: Bogus TCP flags set by 192.168.0.50:49054 (dest port 22)</p>
<p>Feb 20 13:20:56 UDP: dgram to port 1 from 192.168.0.50:49047 (300 data bytes)</p>
<p>Feb 20 13:20:56 ICMP: 192.168.0.50: port is unreachable to (udp: dest port 1, source port 49047)</p>
<p>Feb 20 13:20:58 UDP: dgram to port 1 from 192.168.0.50:49047 (300 data bytes)</p>
<p>Feb 20 13:20:58 ICMP: 192.168.0.50: port is unreachable to (udp: dest port 1, source port 49047)</p>
<p>Feb 20 13:21:01 UDP: dgram to port 1 from 192.168.0.50:49047 (300 data bytes)</p>
<p>Feb 20 13:21:01 ICMP: 192.168.0.50: port is unreachable to (udp: dest port 1, source port 49047)</p>
<p>Feb 20 13:21:04 TCP: Xmas scan detected [ports 1,9,49055,49056,49054] from 192.168.0.50 [ports 49060,49056,49054,9]</p>
<p>Feb 20 13:21:05 UDP: dgram to port 1 from 192.168.0.50:49047 (300 data bytes)</p>
<p>Feb 20 13:21:05 ICMP: 192.168.0.50: port is unreachable to (udp: dest port 1, source port 49047)</p>
<p>Feb 20 13:21:12 TCP: null scan detected [ports 9,49056,49060,49054] from 192.168.0.50 [ports 49055,9,1,49056,49054,...]</p>
<p>Feb 20 13:21:13 TCP: FIN scan detected [ports 49060,49054,9,1] from 192.168.0.50 [ports 1,9,49055,49056,49054,...]</p>
<p>Feb 20 13:21:56 TCP: SYN scan mode expired for 192.168.0.50 &#8211; received a total of 1647 packets (33440 bytes).</p>
<p>Feb 20 13:21:56 TCP: Xmas scan mode expired for 192.168.0.50 &#8211; received a total of 33812 packets (676300 bytes).</p>
<p>Feb 20 13:22:03 TCP: null scan mode expired for 192.168.0.50 &#8211; received a total of 16462 packets (329300 bytes).</p>
<p>Feb 20 13:22:04 TCP: FIN scan mode expired for 192.168.0.50 &#8211; received a total of 16343 packets (326860 bytes)</p>
<p>Iplog does recognize the bogus TCP flags, null packet, &#8230; every Nmap OS Fingerprint attempt. That&#8217;s why it can act accordingly and send a fake answer to fool Nmap. Nmap output is the following:</p>
<p># nmap (V. 3.10ALPHA4) scan initiated Thu Feb 20 13:20:54 2003 as: nmap -vv -sS -O -oN nmap3.log 192.168.0.19</p>
<p>Insufficient responses for TCP sequencing (1), OS detection may be less accurate</p>
<p>Insufficient responses for TCP sequencing (1), OS detection may be less accurate</p>
<p>Insufficient responses for TCP sequencing (1), OS detection may be less accurate</p>
<p>Interesting ports on voodoo (127.0.0.1):</p>
<p>(The 1599 ports scanned but not shown below are in state: closed)</p>
<p>Port State Service</p>
<p>22/tcp open ssh</p>
<p>25/tcp open smtp</p>
<p>80/tcp open http</p>
<p>143/tcp open imap2</p>
<p>No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi).</p>
<p>TCP/IP fingerprint:</p>
<p>SInfo(V=3.10ALPHA4%P=i586-pc-linux-gnu%D=2/20%Time=3E54C833%O=9%C=1)</p>
<p>T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)</p>
<p>T2(Resp=Y%DF=N%W=0%ACK=O%Flags=BA%Ops=)</p>
<p>T2(Resp=Y%DF=Y%W=100%ACK=O%Flags=BARF%Ops=)</p>
<p>T2(Resp=Y%DF=Y%W=100%ACK=O%Flags=BPF%Ops=)</p>
<p>T3(Resp=Y%DF=N%W=0%ACK=O%Flags=BA%Ops=)</p>
<p>T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)</p>
<p>T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)</p>
<p>T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)</p>
<p>T7(Resp=Y%DF=N%W=0%ACK=O%Flags=BA%Ops=)</p>
<p>T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)</p>
<p>PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)</p>
<p># Nmap run completed at Thu Feb 20 13:21:07 2003 &#8212; 1 IP address (1 host up) scanned in 13.633 seconds</p>
<p>As you can see, iplog answers to all the packets with specific options; we can have a look to iplog source code:</p>
<p>file iplog_tcp.c, line 99:</p>
<p>if (opt_enabled(FOOL_NMAP) &amp;&amp;</p>
<p>((tcp_flags &amp; TH_BOG) || (tcp_flags == TH_PUSH) || (tcp_flags == 0) ||</p>
<p>((tcp_flags &amp; (TH_SYN | TH_FIN | TH_RST)) &amp;&amp; (tcp_flags &amp; TH_URG)) ||</p>
<p>((tcp_flags &amp; TH_SYN) &amp;&amp; (tcp_flags &amp; (TH_FIN | TH_RST)))))</p>
<p>That &#8216;if&#8217; statement means that if we have executed iplog with the &#8216;-z&#8217; switch (fool Nmap), and the TCP header options are:</p>
<ul>
<li>bogus (use of the reserved bits), or</li>
<li>only PUSH , or</li>
<li>NULL (no options), or</li>
<li>SYN+URG, FIN+URG, RST+URG, or</li>
<li>SYN+FIN, SYN+RST</li>
</ul>
<p>then it will create a new packet for answering with the options we want (some options depend on the machine time, for example DF, that&#8217;s why sometimes is 1 and other 0, or the window size which is defined as current_time &amp; 1).</p>
<p>Of course we could change the file iplog_tcp.c so that iplog always behave as a Sega Dreamcast for those nasty packets, but we do not have the flexilibity to have multiple personalities or specify that we want to behave as a Dreamcast only for a specific traffic or ip address. It&#8217;s a good idea to answer in this way to abnormal packets, but it&#8217;s better to have the control and be more granular.</p>
<hr size="2" />5. *BSD solutions</p>
<p>5.1. Blackhole</p>
<p>Blackhole is a special option present in the *BSD kernel to control system behavior when someone is connecting to closed TCP or UDP ports. There are two options that we can change:</p>
<p>sysctl -w net.inet.tcp.blackhole=[0 | 1 | 2]</p>
<p>sysctl -w net.inet.udp.blackhole=[0 | 1]</p>
<p>The TCP blackhole behaves as following: if the value is 0, whenever a packet connects a TCP closed port, it returns a RST. If the value is 1, if a SYN packet connects a TCP closed port, it&#8217;s dropped; and if the value is 2, if any packet tries to connect to a TCP closed port, it&#8217;s dropped.</p>
<p>The UDP blackhole is similar; if the value is 0, any connection to an UDP closed port, returns an ICMP port unreachable; if the value is 1, it does not return the ICMP port unreachable.</p>
<p>If we enable these settings in paranoid mode, tests 5, 6, 7 and the unreachable port test won&#8217;t work when running Nmap to remotely guess the OS, so we&#8217;ll not be able to know the OS.</p>
<hr size="2" />5.2. Fingerprint Fucker</p>
<p>There is also another <a href="http:/packetstormsecurity.org/UNIX/misc/bsdfpf.tar.gz" target="_top">Fingerprint fucker</a> for the FreeBSD systems, written by Darren Reed, that simply rewrites the TCP/IP stack and sends packets with other settings (different window size, ttl, &#8230;) trying to hide its real OS.</p>
<hr size="2" />5.3. OpenBSD packet filter</p>
<p>The OpenBSD packet filter can also be configured to try to defeat remote OS Fingerprint. There are some options in the <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&amp;sektion=5&amp;arch=i386&amp;apr" target="_top">pf.conf configuration file</a><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&amp;sektion=5&amp;arch=i386&amp;apr" target="_top"> (Traffic Normalization)</a> where you can change some IP fields (DF bit, TTL, MSS, ID), as you can see in pf.conf&#8217;s man page:</p>
<p>no-df</p>
<p>Clears the don&#8217;t-fragment bit from a matching ip packet.</p>
<p>min-ttl _number_</p>
<p>Enforces a minimum ttl for matching ip packets.</p>
<p>max-mss _number_</p>
<p>Enforces a maximum mss for matching tcp packets.</p>
<p>random-id</p>
<p>Replaces the IP identification field with random values to compen-</p>
<p>sate for predictable values generated by many hosts. This option</p>
<p>only applies to outgoing packets that are not fragmented after the</p>
<p>optional fragment reassembly.</p>
<hr size="2" />5.4. FreeBSD TCP_DROP_SYNFIN</p>
<p>FreeBSD kernel has got a <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/dialup-firewall/kernel.html" target="_top">special option</a>, TCP_DROP_SYNFIN, which actually drops all packets with the SYN and FIN flags activated (Nmap test #3 sends a SYN+FIN+PSH+URG TCP packet); this special option could be also a valid method for defeating Nmap when performing its tests (be sure to activate it at startup in /etc/rc.conf).</p>
<hr size="2" />6. General solutions</p>
<p>We saw when talking about IP Personality, that we could set up a linux router protecting our internal network, and that router could fool Nmap and other OS Fingerprinting tools when trying to remotely guess our internal network hosts&#8217; OS. If we haven&#8217;t got a linux box, but we&#8217;ve got a Checkpoint FW-1, then we can do something similar because of the fw-1 INSPECT language. Using this language, it&#8217;s easy to create your own &#8216;packet inspector&#8217; for the packets that are going through your fw-1. There is a <a href="http://www.phoneboy.com/fom-serve/cache/82.html" target="_top">reference</a> in the FW-1 mailing list describing a fw-1 service to manage those bogus packets:</p>
<hr size="2" />7. More things to play with</p>
<p>Next solution won&#8217;t allow us to hide or change our OS, but we&#8217;ll be able to create as many virtual devices as we want with every valid Operating System you can imagine. This idea is being applied to the honeypots field, just because you can create a entire C class virtual network with lots of different OS flying around; the black-hat can be easily attracted by all those boxes running so many vulnerable services&#8230;It could be an attacker&#8217;s heaven.</p>
<p>Honeypots in general, and this approach in particular, can be highly recommended not only for learning the black-hat tools and tactics, but for also divert attackers to your honeynet and not your production boxes. It can also make attackers think that you have an entire farm of a specific OS (the virtual one) and hide your real OS.</p>
<p>The package I&#8217;m going to briefly describe is <a href="http://www.citi.umich.edu/u/provos/honeyd/" target="_top">honeyd</a>, from Niels Provos. One of its greatest feature is that we can give each virtual device a specific OS personality. That personality is also fed by a standard nmap fingerprinting file, allowing us to become the OS we want. I&#8217;m not going to deeply describe this great tool, I&#8217;m only going to run the sample config file to demonstrate what it can do.</p>
<p>After installing it, there is a file which name is config.localhost with a lot of virtual devices configured in. For instance, if we get the device 10.0.0.1 definition:</p>
<p>route entry 10.0.0.1</p>
<p>route 10.0.0.1 link 10.0.0.0/24</p>
<p>[snip]</p>
<p>create routerone</p>
<p>set routerone personality &#8220;Cisco 7206 running IOS 11.1(24)&#8221;</p>
<p>set routerone default tcp action reset</p>
<p>add routerone tcp port 23 &#8220;router-telnet.pl&#8221;</p>
<p>[snip]</p>
<p>bind 10.0.0.1 routerone</p>
<p>[snip]</p>
<p>The high level explanation is that we have a device which ip address is 10.0.0.1, which will act as a Cisco 7206 running IOS 11.1(24), will reset all TCP connections except for connections to TCP port 23, because then the script router-telnet.pl (an emulation of the telnet daemon) will be executed. Well, let&#8217;s run Nmap to check the OS running in the virtual device we&#8217;ve just created:</p>
<p># nmap (V. 3.10ALPHA4) scan initiated Thu Feb 20 16:17:44 2003 as: nmap -v -sS -oN nmap4.log -O 10.0.0.1</p>
<p>Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port</p>
<p>Interesting ports on 10.0.0.1:</p>
<p>(The 1604 ports scanned but not shown below are in state: filtered)</p>
<p>Port State Service</p>
<p>23/tcp open telnet</p>
<p>Remote OS guesses: Cisco 7206 running IOS 11.1(24), Cisco 7206 (IOS 11.1(17)</p>
<p>TCP Sequence Prediction: positive increments</p>
<p>Difficulty=26314 (Worthy challenge)</p>
<p>IPID Sequence Generation: Incremental</p>
<p># Nmap run completed at Thu Feb 20 16:20:42 2003 &#8212; 1 IP address (1 host up) scanned in 178.847 seconds</p>
<p>Again, when receiving Nmap bogus packets, honeyd answers with the device&#8217;s personality we&#8217;ve chosen.</p>
<hr size="2" />8. Conclusion</p>
<p>As stated in the <a href="http://ippersonality.sourceforge.net/doc/ippersonality-en-2.html" target="_top">IP Personality Limitations</a>, changing your TCP/IP stack behavior when receiving Nmap bogus packets can create some troubles:</p>
<ul>
<li>some characteristics of OS are related to the host architecture (for instance page sizes on various CPU) which could lead to performance issues;</li>
<li>some of these changes are more &#8220;political&#8221; choices of the IP stack (initial sequence numbers, window sizes, TCP options available&#8230;). Tweaking those allow to fool a scanner but might break regular connectivity by changing network parameters. It could also make the system weaker if the emulated IP stack is not as strong as the initial one</li>
</ul>
<p>In my opinion, it&#8217;s pretty clear that we can&#8217;t rely on only one security tool to remotely guess the Operating System. This paper has shown that it&#8217;s very easy to fool Nmap (and other similar tools) when trying to profile a remote device, and that all those attempts can be properly logged by the remote administrator. To successfully remotely fingerprint an OS, all possible methods have to be gathered, starting with the simpler ones (banner grabbing, seeking for job posts, social engineering, &#8230;) to the more complex ones (network fingerprinting). Every open service in a remote device has to be properly analyzed (banner, responses, behavior against attacks, DoS, known errors) and documented. It could be even possible (although not ethical) to run some tools that are known to crash specific OS versions (nuke, land, teardrop, &#8230;) to clarify our guess.</p>
<p>Although all these solutions can be modified to detect and fool any other TCP/IP fingerprint tool (just knowing which packets are sent), it is highly recommended to use various tools when doing a remote OS Fingerprint. Nmap is perhaps the most widely used, but there is another tool that also works great: <a href="http://www.sys-security.com/html/projects/X.html" target="_top">Xprobe</a>. Xprobe also has got a signatures database (not updated very often), and the final guess it&#8217;s a probabilistic guess (fuzzy matching) depending on various answers. One of xprobe&#8217;s biggest problem is that it&#8217;s rarely updated and it includes very few signatures. Nmap detects the remote OS if its tests&#8217; result is exactly equal to that OS signature in the database, but you can run Nmap with the switch ( &#8211;osscan_guess or &#8211;fuzzy, and then it performs a more aggressive OS guess trying to find the best match available in its signatures database. There is a <a href="http://www.sys-security.com/archive/papers/Xprobe2.pdf" target="_top">paper</a> about Xprobe specification and usage where explains why its idea and implementation seems to be so good and so valid. I think it should be executed as a partner with Nmap, in case you can send both TCP and ICMP packets against the target host. Xprobe could be an effective tool in poorly secured networks, just because it sends ICMP timestamps and ICMP netmask requests, which can become suspicious for a network administrator. It does not sent bogus packets (uncommon TCP packets, since the reserved bits are rarely used) to detect the remote OS, it simply sends &#8216;normal&#8217; traffic (ICMP) to the target host, making harder (if not impossible) to detect such packets (and therefore, act accordingly). This approach was first used in <a href="http://sing.sourceforge.net/" target="_top">sing</a> (Send Internet Nasty Garbage), which can be executed with the -O switch for doing OS Fingerprint (with the ICMP type you choose). It should be difficult to any IDS or network implementation to detect that those ICMP packets have other function, just because there are a huge number of those ICMP packets daily in our networks. On the other hand, ICMP now is getting blocked by default from almost every network environment, making impossible to do an ICMP OS remote fingerprint, but usually you can find some TCP services in those network environments and shoot your Nmap packets.</p>
<p>Just for being accurate, there is also another OS Fingerprint tool, named <a href="http://www.stearns.org/p0f/" target="_top">p0f</a>; p0f listens to your network looking for the first SYN in a TCP connection and grabs that packet options. If it matches with its signature database, then we can guess the OS; again, changing any of the options that p0f is looking for, will completely fool it. If, for instance, using IP Personality, we change every packet&#8217;s window size, we can fake our responses and fool p0f.</p>
<p>Administrators should also carefully configure all their devices for not showing anything that can be used for identified them (banners, issue, common services open by default, &#8230;) and run one of these tools that can log the OS Fingerprint attempts, because it&#8217;s very likely that, those ip addresses wanting to know your OS, will be attacking your network in a short period of time. Besides, setting up a linux router using IP Personality and fooling everyone outside your network that you&#8217;re using a different OS (with any of the options shown in this paper), could be a good security measure.</p>
<hr size="2" />References</p>
<p>Matthew Smart, Robert Malan, and Farnan Jahanian, Defeating TCP/IP Stack Fingerprinting, Usenix Security Symposium 2000, URL:<a href="http://www.usenix.org/publications/library/proceedings/sec2000/smart.html" target="_top">http://www.usenix.org/publications/library/proceedings/sec2000/smart.html</a> .</p>
<p>Fyodor, Remote OS Detection via TCP/IP Stack Fingerprinting, June 11, 2002, URL: <a href="http://www.insecure.org/nmap/nmap-fingerprinting-article.html" target="_top">http://www.insecure.org/nmap/nmap-fingerprinting-article.html</a> .</p>
<p>Gael Roualland and Jean-Marc Saffroy, IP Personality, URL: <a href="http://ippersonality.sourceforge.net/" target="_top">http://ippersonality.sourceforge.net/</a> .</p>
<p>Sean Trifero and Derek Callaway, Stealth, URL: <a href="http://www.innu.org/~sean/" target="_top">http://www.innu.org/%7Esean/</a> .</p>
<p>Ryan McCabe, IPlog, URL: <a href="http://ojnk.sourceforge.net/stuff/iplog.readme" target="_top">http://ojnk.sourceforge.net/stuff/iplog.readme</a> .</p>
<p>Fusys and |CyRaX|, Fingerprint Fucker, URL: <a href="http://www.s0ftpj.org/tools/fingfuck.tgz" target="_top">http://www.s0ftpj.org/tools/fingfuck.tgz</a> .</p>
<p>FreeBSD, Blackhole, URL: <a href="http://www.gsp.com/cgi-bin/man.cgi?section=4&amp;topic=blackhole" target="_top">http://www.gsp.com/cgi-bin/man.cgi?section=4&amp;topic=blackhole</a> .</p>
<p>Darren Reed, Fingerprint Fucker, URL: <a href="http://packetstormsecurity.org/UNIX/misc/bsdfpf.tar.gz" target="_top">http://packetstormsecurity.org/UNIX/misc/bsdfpf.tar.gz</a> .</p>
<p>OpenBSD, pf.conf manual, URL: <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&amp;sektion=5&amp;arch=i386&amp;apr" target="_top">http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&amp;sektion=5&amp;arch=i386&amp;apr</a> .</p>
<p>FreeBSD, Kernel Options, URL: <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/dialup-firewall/kernel.html" target="_top">http://www.freebsd.org/doc/en_US.ISO8859-1/articles/dialup-firewall/kernel.html</a> .</p>
<p>Alfredo Andr�s Omella, Trying to stop the security tool queSO, URL: <a href="http://www.phoneboy.com/fom-serve/cache/82.html" target="_top">http://www.phoneboy.com/fom-serve/cache/82.html</a> , October, 6th, 1998.</p>
<p>Niels Provos, Honeyd &#8211; Network Rhapsody for You&#8221;, URL: <a href="http://www.citi.umich.edu/u/provos/honeyd/" target="_top">http://www.citi.umich.edu/u/provos/honeyd/</a> .</p>
<p>Gael Roualland and Jean-Marc Saffroy, IP Personality Limitations, URL: <a href="http://ippersonality.sourceforge.net/doc/ippersonality-en-2.html" target="_top">http://ippersonality.sourceforge.net/doc/ippersonality-en-2.html</a> .</p>
<p>Fyodor Yarochkin and Ofir Arkin, Xprobe, URL: <a href="http://www.sys-security.com/html/projects/X.html" target="_top">http://www.sys-security.com/html/projects/X.html</a> .</p>
<p>Fyodor Yarochkin and Ofir Arkin, Xprobe2 &#8211; A&#8217;Fuzzy&#8217; Approach to Remote Active Operating System Fingerprinting, URL: <a href="http://www.sys-security.com/archive/papers/Xprobe2.pdf" target="_top">http://www.sys-security.com/archive/papers/Xprobe2.pdf</a>.</p>
<p>Alfredo Andr�s Omella, Sing, URL: <a href="http:/sing.sourceforge.net/" target="_top">http://sing.sourceforge.net</a> , October, 6th, 1998.</p>
<p>Michael Zalewski and William Stearns, p0f, URL: <a href="http://www.stearns.org/p0f/" target="_top">http://www.stearns.org/p0f/</a> .</p>
<hr size="2" />A. GNU Free Documentation License</p>
<p>Version 1.2, November 2002</p>
<p>Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p>
<hr size="2" />A.1. PREAMBLE</p>
<p>The purpose of this License is to make a manual, textbook, or other functional and useful document &#8220;free&#8221; in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.</p>
<p>This License is a kind of &#8220;copyleft&#8221;, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.</p>
<p>We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.</p>
<hr size="2" />A.2. APPLICABILITY AND DEFINITIONS</p>
<p>This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The &#8220;Document&#8221;, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as &#8220;you&#8221;. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.</p>
<p>A &#8220;Modified Version&#8221; of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.</p>
<p>A &#8220;Secondary Section&#8221; is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document&#8217;s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.</p>
<p>The &#8220;Invariant Sections&#8221; are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.</p>
<p>The &#8220;Cover Texts&#8221; are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.</p>
<p>A &#8220;Transparent&#8221; copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not &#8220;Transparent&#8221; is called &#8220;Opaque&#8221;.</p>
<p>Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.</p>
<p>The &#8220;Title Page&#8221; means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, &#8220;Title Page&#8221; means the text near the most prominent appearance of the work&#8217;s title, preceding the beginning of the body of the text.</p>
<p>A section &#8220;Entitled XYZ&#8221; means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as &#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, &#8220;Endorsements&#8221;, or &#8220;History&#8221;.) To &#8220;Preserve the Title&#8221; of such a section when you modify the Document means that it remains a section &#8220;Entitled XYZ&#8221; according to this definition.</p>
<p>The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.</p>
<hr size="2" />A.3. VERBATIM COPYING</p>
<p>You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.</p>
<p>You may also lend copies, under the same conditions stated above, and you may publicly display copies.</p>
<hr size="2" />A.4. COPYING IN QUANTITY</p>
<p>If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document&#8217;s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.</p>
<p>If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.</p>
<p>If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.</p>
<p>It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.</p>
<hr size="2" />A.5. MODIFICATIONS</p>
<p>You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:</p>
<ol>
<li>Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.</li>
<li>List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.</li>
<li>State on the Title page the name of the publisher of the Modified Version, as the publisher.</li>
<li>Preserve all the copyright notices of the Document.</li>
<li>Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.</li>
<li>Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the<a href="http://www.zog.net/Docs/nmap.html#GFDL-ADDENDUM">Addendum</a> below.</li>
<li>Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document&#8217;s license notice.</li>
<li>Include an unaltered copy of this License.</li>
<li>Preserve the section Entitled &#8220;History&#8221;, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled &#8220;History&#8221; in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.</li>
<li>Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the &#8220;History&#8221; section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.</li>
<li>For any section Entitled &#8220;Acknowledgements&#8221; or &#8220;Dedications&#8221;, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.</li>
<li>Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.</li>
</ol>
<p>M. Delete any section Entitled &#8220;Endorsements&#8221;. Such a section may not be included in the Modified Version.</p>
<ol>
<li>Do not retitle any existing section to be Entitled &#8220;Endorsements&#8221; or to conflict in title with any Invariant Section.</li>
<li>Preserve any Warranty Disclaimers.</li>
</ol>
<p>If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version&#8217;s license notice. These titles must be distinct from any other section titles.</p>
<p>You may add a section Entitled &#8220;Endorsements&#8221;, provided it contains nothing but endorsements of your Modified Version by various parties&#8211;for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.</p>
<p>You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.</p>
<p>The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.</p>
<hr size="2" />A.6. COMBINING DOCUMENTS</p>
<p>You may combine the Document with other documents released under this License, under the terms defined in <a href="http://www.zog.net/Docs/nmap.html#GFDL-4">section 4</a> above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.</p>
<p>The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.</p>
<p>In the combination, you must combine any sections Entitled &#8220;History&#8221; in the various original documents, forming one section Entitled &#8220;History&#8221;; likewise combine any sections Entitled &#8220;Acknowledgements&#8221;, and any sections Entitled &#8220;Dedications&#8221;. You must delete all sections Entitled &#8220;Endorsements&#8221;.</p>
<hr size="2" />A.7. COLLECTIONS OF DOCUMENTS</p>
<p>You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.</p>
<p>You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.</p>
<hr size="2" />A.8. AGGREGATION WITH INDEPENDENT WORKS</p>
<p>A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an &#8220;aggregate&#8221; if the copyright resulting from the compilation is not used to limit the legal rights of the compilation&#8217;s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.</p>
<p>If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document&#8217;s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.</p>
<hr size="2" />A.9. TRANSLATION</p>
<p>Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.</p>
<p>If a section in the Document is Entitled &#8220;Acknowledgements&#8221;, &#8220;Dedications&#8221;, or &#8220;History&#8221;, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.</p>
<hr size="2" />A.10. TERMINATION</p>
<p>You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.</p>
<hr size="2" />A.11. FUTURE REVISIONS OF THIS LICENSE</p>
<p>The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.</p>
<p>Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License &#8220;or any later version&#8221; applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.</p>
<hr size="2" />A.12. ADDENDUM: How to use this License for your documents</p>
<p>To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:</p>
<p>Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled &#8220;GNU Free Documentation License&#8221;.</p>
<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the &#8220;with&#8230;Texts.&#8221; line with this:</p>
<p>with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.</p>
<p>If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.</p>
<p>If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.</p>
</div>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/Iqa9C8K_h5c" height="1" width="1"/>]]></content:encoded><description>This was on my old site before I moved. Maybe someone will find it interesting. -John David Barroso Berrueta http://voodoo.somoslopeor.com &amp;#60;tomac@somoslopeor.com&amp;#62; Copyright © 2003 David Barroso Berrueta. Palencia (Spain) Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published &lt;a href='http://www.chakraborty.ch/?p=169'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=169</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=169</feedburner:origLink></item><item><title>Shenanigans For Good</title><link>http://feedproxy.google.com/~r/TheShivling/~3/G0y2PX0lH3M/</link><category>Exploits</category><category>Politics</category><category>Privacy &amp; Security Law</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Sun, 21 Feb 2010 14:33:53 PST</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=166</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A colleague of mine recently posted a link to an information warfare-related article on an <a href="http://en.irangreenvoice.com/article/2010/feb/19/1236" target="_blank">Iranian activism site</a>.  Like-minded Iranian friends, affiliated with the <a href="http://en.wikipedia.org/wiki/Green_Movement" target="_blank">Green movement</a>, seemed to have as a goal to disseminate information about how to counter censorship in Iran by distributing tools, news, and other means of helping dissidents avoid having their communication muzzled and detected by the mullahs.</p>
<p>This particular article lists examples of electronic warfare by regime-friendly groups such as the &#8220;Iranian Cyber Army&#8221;, recently suspected of numerous attacks against organizations seen as hostile to the Iranian government.  Ironically, <a href="http://news.bbc.co.uk/2/hi/8453718.stm" target="_blank">these included Chinese search engine baidu.com</a> in retaliation for some perceived slight by the Chinese government &#8212; this shortly after several Chinese organizations have become increasingly implicated in online hits against U.S. and other Western government and corporate targets; a recent report in The Associated Press / The Guardian <a href="http://www.guardian.co.uk/world/feedarticle/8954390" target="_blank">mention</a> the Chinese universities Shanghai Jiaotong and Lanxiang Vocational Institute as sources of the &#8220;<a href="http://siblog.mcafee.com/cto/operation-%E2%80%9Caurora%E2%80%9D-hit-google-others/" target="_blank">Aurora</a>&#8221; attacks against Google and others.  On a humorous side note, if 1337 xenophobic script kiddies friendly with one totalitarian regime are now going after 1337 xenophobic script kiddies friendly with another totalitarian regime, it might become difficult to figure out who&#8217;s on whose side&#8230;</p>
<p>That said, there&#8217;s not much an outsider with technological know-how can do to help victims of censorship and repression in any country beyond providing them with the education and means to get around official repression of communication with each other and with the outside world, and to avoid being detected by government thugs while doing so.  A friend of mine, when asked to to provide help and information about censorship avoidance to an Iranian group, took a very cautious line, making it very very clear that he was reluctant to offer anything that carried even the slightest possibility of someone being arrested, tortured, or even killed if they were found using it.  I take a bit of a different view &#8212; solutions like PGP, TOR, Haystack, anonymous remailers, or SSL enabled CGI proxies, combined with private browsing available on most newer browsers, are powerful stuff, and with a modicum of care on the part of their users, can conspire to throw a hefty wrench into the surveillance machinations of dictatorial spooks.  The best anyone can do is to make users at risk of brutal crackdowns aware of what could possibly go wrong, give them a good head-start on how to use their new toys, and let them be adults about making an educated choice.  After all, in the case of the Iranian protesters, these are people who&#8217;re willing to go out on the street and be shot at for what they believe in.</p>
<p>So much for &#8220;passive&#8221; assistance &#8212; giving people better anonymous / encrypted communications tools and the knowledge on how to effectively use them.  What about active help, though?  Beyond the usual low-level stupidity found in IRC channels (e.g. background noise of the &#8220;www.bobsautodetailing.com pwn3d by H4X0RZ 4 ALLAH AGAINST 4m3r1kkkAH&#8221; variety), attacks on the infrastructure of Western countries and organizations from Russian, Iranian, North Korean, Chinese, and other groups, presumably with at least some tacit blessing from their governments, are pretty common.  Botnets designed to carry out probes and hits on infrastructure, launch DDoS attacks, create economic sabotage, steal sensitive data, and other bad things, are pretty common in the wild.</p>
<p>Cybercrime legislation in most developed countries is designed to pursue and allow prosecution of even casual probes by unauthorized persons.  Whether one agrees with laws or enforcement tactics or not, the goal is to keep anyone, no matter what motivates them, from generally screwing things up by spying, stealing, or vandalizing.  Unless it specifically takes into account <em>intent</em>, the law doesn&#8217;t differentiate between amateurs or professionals &#8212; it&#8217;s all a crime.  Why?   Partially because attacking a person/host/company/government via a network is the technologically easiest, least physically risky way of getting to the goodies, and because it&#8217;s often impossible to differentiate between the casual hacker and the much-vaunted bugaboo of organized cybercriminals and government-sponsored electronic espionage.  The idea, I suppose, is that tolerating any intrusion means that the world economic system as we know it will grind to a standstill (or at least your job and mine will be made that much more difficult.)  Maybe, maybe not, but without such laws as a deterrent, I&#8217;m sure the barriers to causing grief to legitimate business would be a lot lower.</p>
<p>But what of aiding and abetting attacks against distasteful regimes or their allies / henchmen?  A few years ago, the idea of <a href="http://www.google.com/search?name=f&amp;hl=en&amp;q=counter-hacking" target="_blank">counter-hacking</a>, or ethical hacking aimed at taking out threats either by sabotaging those responsible or by &#8220;cleaning&#8221; affected infrastructures when unsuspecting owners could not or would not, was in high discussion.  Most security professionals in my circle of acquaintances seemed to be roundly against this concept, due to the potential for a slippery slope, and for unacceptable collateral damage &#8212; plus, what good is it to have and enforce laws against illicit intrusion when the &#8220;good guys&#8221; themselves are guilty of violating them, even if they are perfectly well-meaning?</p>
<p>Given how hungry my non-technical Iranian friends were for any information about &#8220;passive&#8221; tools as those described above, I&#8217;d imagine groups in opposition to the government (supposedly there&#8217;s now a &#8220;<a href="http://www.jpost.com/International/Article.aspx?id=167963" target="_blank">Green Cyber Army</a>&#8220;) would imaginably be equally happy for any assistance from sympathetic types in the West.  As someone strictly in favor of the rule of law, I can&#8217;t condone any illegal actions of the sort these guys are indubitably carrying out, but anything that helps cause grief for kiddies hacking in the service of thugs is ok in my book.  A few dozen clicks to waste here and there to waste the bad guys&#8217; bandwidth, a Metasploit download mirror, or an open proxy or TOR gateway probably wouldn&#8217;t violate the spirit of the law.  Wink wink.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/G0y2PX0lH3M" height="1" width="1"/>]]></content:encoded><description>A colleague of mine recently posted a link to an information warfare-related article on an Iranian activism site.  Like-minded Iranian friends, affiliated with the Green movement, seemed to have as a goal to disseminate information about how to counter censorship in Iran by distributing tools, news, and other means of helping dissidents avoid having their &lt;a href='http://www.chakraborty.ch/?p=166'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=166</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=166</feedburner:origLink></item><item><title>Securitrons and the Thunk Test</title><link>http://feedproxy.google.com/~r/TheShivling/~3/ODygZ8H8HtM/</link><category>Best Practices</category><category>Management</category><category>Security Policy</category><category>Standards</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Thu, 21 Jan 2010 01:54:31 PST</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/?p=163</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>An increasing amount of security work these days is very academic and theoretical, rather than hands-on.  The development of risk management (a.k.a. &#8220;covering your ass&#8221;) as a serious factor driving security awareness over the past ten years has led to a massive amount of paper-generation and abstraction, going hand-in-hand with ever-more-complex attempts to needlessly quantify security realities.</p>
<p>Partially this stems from the desire to apply financial metrics to risk and security, partially from the need of managers lacking a strong technical background or the ability to acquire this to have easy-to-understand, purely numerical descriptions and graphs of where their money is going.</p>
<p>One of my colleagues recently came up with the concept of an abstract measure of security investment (time, effort, grief, etc.) &#8212; the <strong>securitron</strong>.  As in (hold hands zombie-like out front and repeat in a robot manager voice), &#8220;we&#8217;re going to need more securitrons!  Throw two hundred additional securitrons at this project!&#8221;</p>
<p>For some reason, this came up again during a meeting to discuss increased efficiency of risk management paperwork.  The upshot of this meeting, as with pretty much any business meeting consisting of over three people (and not taking place by the coffee machines, where most productive work gets done), was (a) use your own damn judgment, that&#8217; s what you&#8217;re paid for, these are only suggestions, (b) if you still have questions, ask your colleagues, that&#8217;s why we sit together, and (c) when will this damn meeting end?</p>
<p>However, an interesting point did arise &#8212; the idea that security, risk management, and compliance work tends to end up with reams of paper that may or may not ever be read.  This was the case with all medical regulatory and compliance work I&#8217;ve ever done, as well as with pretty much every experience I&#8217;ve had in financial services since 2000.</p>
<p>The conclusion?  My personal view is that documentation and paperwork does not make much sense unless it&#8217;s in an easily accessible format (e.g. a well-organized database schema accessible by very flexible views to whomever wants to use and evaluate the data.)</p>
<p>Another very important point that my colleague raised, though, was the concept of the &#8220;thunk test&#8221; &#8212; i.e. if a security policy is dropped on a desk and makes a &#8220;thunk&#8221;, it&#8217;s too big to be of any use.  Nothing that heavy can possibly have the elegance and simplicity to be easily enough understood for practical everyday application.  At the risk of advocating the development of tired business doublespeak, I could see a use for a plainly worded non-mealy-mouthed type of goals and rules statement (&#8220;don&#8217;t leave passwords lying around.  Never talk to strangers.  Don&#8217;t pet strange dogs&#8221;) for security organizations that actually fits on a single piece of A4 paper (or at least in a document that makes no more than a soft whisper as it&#8217;s dropped.)</p>
<p>Now, we are working on finding a good name for a measure of the quantitative relationship between securitrons and reams of paper.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/ODygZ8H8HtM" height="1" width="1"/>]]></content:encoded><description>An increasing amount of security work these days is very academic and theoretical, rather than hands-on.  The development of risk management (a.k.a. &amp;#8220;covering your ass&amp;#8221;) as a serious factor driving security awareness over the past ten years has led to a massive amount of paper-generation and abstraction, going hand-in-hand with ever-more-complex attempts to needlessly quantify &lt;a href='http://www.chakraborty.ch/?p=163'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=163</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=163</feedburner:origLink></item><item><title>Autistic Security Event Monitoring</title><link>http://feedproxy.google.com/~r/TheShivling/~3/lh5vuzB-2KY/</link><category>Best Practices</category><category>Management</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Wed, 23 Sep 2009 10:26:27 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/blog/?p=102</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.wired.com" target="_blank">Wired Magazin</a>e recently published a set of articles titled <a href="http://www.wired.com/techbiz/people/magazine/17-10/ff_smartlist" target="_blank">12 Shocking Ideas That Could Change the World.</a> Among them was a suggestion by a Danish gentleman named Thorkil Sonne, of <a href="http://www.specialisterne.dk/" target="_blank">Specialisterne</a>, to <a href="http://www.wired.com/techbiz/people/magazine/17-10/ff_smartlist" target="_blank">hire autists</a>.  His reasoning is that people with autism or asperger&#8217;s are good at routine tasks;</p>
<p style="padding-left: 30px;"><em>&#8220;As a general view, they have excellent memory and strong attention to detail. They are persistent and good at following structures and routines&#8221;</em></p>
<p>So, I got to thinking; one of the discussions I had with colleagues following a recent meeting with a provider of managed security services (see previous post) dealt with the idea that building and maintaining a decent SOC and log/event management procedure is a near-impossible task, due to the difficulty of creating a sustainable operations process; one of my co-workers made the point that most people would tend to get bored with the repetitive nature of looking through logfiles, or even dealing with things like security advisories and updates.</p>
<p>I countered with the assertion that your basic event management and intelligence correlation should, to a large degree, be automated anyway (whether non-dedicated companies can do this as well as, or better than, dedicated outsourcers is a separate discussion that&#8217;s probably best investigated on a case-by-case basis.)  However, the routine nature of any IT operations-type job aside, he did have a point that (a) even when you do automate everything, you&#8217;ll still want a degree of human second-guessing, and (b) that gets mighty dull.</p>
<p>It seems like a logical conclusion that if Thorkil Sonne is right, and autists (is that a word?) can really be excellent at work that requires focus, consistent attention to detail despite the drudgery involved, and clear rules, why not use these guys for exactly the tasks described above?  Someone who is excellent at pattern detection, and is willing to follow the same process day after day after day would seem to be ideal for an SOC monitoring / log &amp; event analysis position.</p>
<p>I don&#8217;t want to come across as somehow insensitive, since I know next to nothing about autism, but purely going by the value proposition put forward by Specialisterne, it seems like a rational conclusion to hire the best people for any given job &#8212; whether or not the fact that they are qualified at what they do stems from extraordinary dedication, experience, or a mental condition should be completely irrelevant.  And in the process, maybe do some good for someone who might be difficult to employ otherwise.</p>
<p style="padding-left: 30px;">
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/lh5vuzB-2KY" height="1" width="1"/>]]></content:encoded><description>Wired Magazine recently published a set of articles titled 12 Shocking Ideas That Could Change the World. Among them was a suggestion by a Danish gentleman named Thorkil Sonne, of Specialisterne, to hire autists.  His reasoning is that people with autism or asperger&amp;#8217;s are good at routine tasks; &amp;#8220;As a general view, they have excellent &lt;a href='http://www.chakraborty.ch/?p=102'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=102</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=102</feedburner:origLink></item><item><title>Stop DDoS and Worms at ISP Level?</title><link>http://feedproxy.google.com/~r/TheShivling/~3/b9bYE9TLwNw/</link><category>Architecture &amp; Design</category><category>Firewalls</category><category>Network Security</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Mon, 21 Sep 2009 11:45:35 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/blog/?p=100</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I had a workshop at the offices of a major international backbone provider today, on the subject of security logging/monitoring/response and DDoS defense for large companies.</p>
<p><strong>1. Tarpits</strong></p>
<p>In the course of providing managed security service, part of the problem faced by these guys is the proliferation of custom exploits and attacks, according to their research up by 59% this year (I&#8217;d link to the pdf, but since I&#8217;m under NDA with the client I was representing, I&#8217;m not entirely sure if it&#8217;d be appropriate.  You figure it out.)  As it turns out, part of their mitigation strategy for quickly identifying new attacks is to set up all non-allocated netblocks they own as gigantic honeynets, for research purposes.</p>
<p>I asked one of their sales guys why they didn&#8217;t allocating a small portion of these IPs as tarpits?  It&#8217;s not a new technology by anyone&#8217;s estimation, and given the sheer scale of IPs they&#8217;re using as honeypots, it wouldn&#8217;t be a big sacrifice, considering that a single LaBrea installation can trap hundreds of worms and stop older beasties from clogging up the tubes.  His response?  &#8221;Our mission isn&#8217;t to save the Internet.&#8221;</p>
<p>Honestly though, it should be &#8212; it&#8217;d be in everyone&#8217;s interest, including their own, to minimize capacity used by worms and bots, bandwidth that could be used productively for other purposes.  To this end, I had an idea; I hadn&#8217;t been aware of the huge amount of unused IP space available to providers of this size.  I also recall various organizations and individuals having excessive IP allocations removed and thrown back into the pool (a good move, considering that the total filling up of IPv4 space has been predicted with clockwork regularity every year since at least 2000.)</p>
<p>So, why not have IANA and the regional RIRs set it as a condition that 5% of any unused IP space an organization owns must be allocated for the public good &#8212; i.e. sticky honeynets / tarpits?</p>
<p><strong>2. Stopping DDoS at the Edge</strong></p>
<p>We started discussing DDoS mitigation strategies for big customers; this particular ISP&#8217;s service consists of a cloud-based solution.  Which brings me back to the idea that, since <a href="http://information-security-resources.com/2009/09/20/should-cyber-defense-go-on-the-offensive/" target="_blank">counter-attack</a> is kind of a silly idea when you&#8217;re fighting 100,000+ hosts, (plus, do you really want companies / governments deciding whom they get to actively knock off the net?) why don&#8217;t we unearth the concept of stopping DDoS at the edge?</p>
<p>This has been around as a concept for some time; it would require a fair amount of coordination on the part of ISPs, and, potentially, governments, considering the magnitude of attacks suffered by <a href="http://asert.arbornetworks.com/2007/05/estonian-ddos-attacks-a-summary-to-date/" target="_blank">Estonia in 2007</a>, as well as China&#8217;s and North Korea&#8217;s burgeoning military / government-sponsored cyberwar capabilities.  However, it seems to make sense to me that figuring out how to stop baddies getting in is a far more sensible goal than stopping them on the way out.</p>
<p><a href="http://packetlife.net/blog/2009/jul/06/remotely-triggered-black-hole-rtbh-routing/" target="_blank">Remotely Triggered Black Hole Routing</a> is a reasonably fresh approach to this, allowing the remote reconfiguration of BGP routes to drop malicious DDoS traffic.  Older concepts include <a href="http://www.infoworld.com/d/security-central/super-firewall-aims-stop-ddos-401" target="_blank">Diadem</a>, a combination of software and dedicated hardware.</p>
<p>There are a few major problems with the idea:</p>
<p><em>a) It would require a massive amount of CPU power</em>.</p>
<p>Considering how much time and money is being invested by Cisco and the likes in deep packet inspection technologies (<a href="http://www.democracynow.org/2009/6/23/deep_packet_inspection_telecoms_aided_iran" target="_blank">not always for good purposes</a> &#8212; caveat, very one-sided article, but the point holds), I wouldn&#8217;t find it to be such an insane development goal to create and deploy dedicated edge routers capable of on-the-fly reconfiguration.</p>
<p><em>b) It would require large amounts of co-operation and coordination</em></p>
<p><em></em>Well, yes.   The Internet is supposed to work on the basis of this.</p>
<p><em>c) It has the potential to knock innocuous sites offline</em></p>
<p>This is the biggie; using spoofed source origin IPs, it&#8217;s conceivable that anyone could be falsely accused of launching a DDoS and in turn be knocked off.  The ISP I spoke with today actually had the tools to deal with this; they worked on the basis of source IP trust levels for customer IPS deployments.   Roughly speaking, every dodgy-looking connection is checked by the provider against a dynamic database of activity emanating from that IP / IP range over its backbone network.  Connections (not contents) are archived for around two weeks; the security management service informs customers of the trust level of that IP.</p>
<p>This could conceivably be adapted to prevent false accusations of DDoS traffic &#8212; for example, by placing modified, heavily audited IDS probes at company networks&#8217; egress points which match &#8220;real&#8221; traffic emanating from the company with the ISP&#8217;s database of traffic claiming to come from this company &#8212; bogus connections would thus not be attributed to the innocent victim.  It&#8217;d be quite tricky with individual users, but it would make it fairly difficult for a botnet to indirectly knock a company or edge ISP offline by getting backbone carriers to drop its traffic due to spoofing.</p>
<p><em>d) Would you trust a consortium of governments / ISPs to decide whom to blackhole?</em></p>
<p>Obviously this is a problem, but I believe that the distributed nature of the Internet is proof against such shenanigans.</p>
<p>Comments?</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/b9bYE9TLwNw" height="1" width="1"/>]]></content:encoded><description>I had a workshop at the offices of a major international backbone provider today, on the subject of security logging/monitoring/response and DDoS defense for large companies. 1. Tarpits In the course of providing managed security service, part of the problem faced by these guys is the proliferation of custom exploits and attacks, according to their &lt;a href='http://www.chakraborty.ch/?p=100'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=100</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=100</feedburner:origLink></item><item><title>Risk Management — Useless?</title><link>http://feedproxy.google.com/~r/TheShivling/~3/PUgIVl5Br80/</link><category>Risk Assessment</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Mon, 20 Jul 2009 11:10:00 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/blog/?p=94</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I just read a post on Marcus Ranum&#8217;s <a href="http://blog.tenablesecurity.com/" target="_blank">Tenable Network Security</a> blog, titled &#8220;<a href="http://blog.tenablesecurity.com/2009/03/ranums-rants-the-anatomy-of-security-disasters.html" target="_self">Anatomy of a Security Disaster</a>&#8220;.  One of his main points appears to be that corporate risk management, by attempting to boil down risks to something easily quantifiable (&#8220;trying to balance an unjustified estimate of cost of failure against a wild-ass guess multiplied by a fudge factor&#8221;), contributes to bad things happening.  According to Ranum, it does this by giving uninformed managers a potential issue that they should not be allowed to sign off on without fully understanding the underlying problem, and without someone in, say, a development process being forced, through increased accountability, to be responsible for making sure things are done right straight off the bat.</p>
<p>There is a very strong thread in the article that risk management, while maybe not directly at fault for either acute or systemic failures, is at least partially to blame for it:</p>
<p style="padding-left: 30px;"><em>&#8220;Unfortunately for us all, the Wall St crash of Dec 2008 serves as a complete debunking of the value of risk management. All the big firms that lost billions or went out of business had risk management departments and practices and felt they were taking acceptable risks. Perhaps the risk management departments were wrong, or perhaps management was living with a reality gap.&#8221;</em></p>
<p>This, bluntly, is nonsense.</p>
<p>First, it is not the fault of a risk management department if management fails to accept a demonstrated risk. Risk analysis will, by its very nature, always be an approximate art (no, not a science, you need to hire people with a lot of experience, and maybe a bit of gut instinct, pay them a bunch of money, and be prepared to trust their analysis.)  Otherwise, why would anyone ever address a potential security flaw?</p>
<p>Risk analysis is nothing more than the prioritization of potential problems with a system, process, tool, what have you.  It is at the core of any bug fix, response to security failures, in short, any security event.  And security events do happen, like it or not.  It&#8217;s not a perfect world, nobody will ever have all the information, and it is a tired cliché that &#8220;hindsight is 20/20&#8243;, it&#8217;s still true.</p>
<p>Second, a proper risk management process does not just entail handing an incompetent manager a set of gift-wrapped risks on a silver platter and saying, &#8220;here you go, enjoy.&#8221;  That&#8217;s called covering your ass.  Correctly done risk assessment and management consists of accompanying, for example, a development process from a to z and being the additional pair of eyes to spot non-obvious flaws.</p>
<p>Ranum&#8217;s ideas about how to help prevent or reduce the probability of something going pear-shaped are all valid.  However, he doesn&#8217;t seem to understand that these all constitute part of a correctly designed risk management process.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/PUgIVl5Br80" height="1" width="1"/>]]></content:encoded><description>I just read a post on Marcus Ranum&amp;#8217;s Tenable Network Security blog, titled &amp;#8220;Anatomy of a Security Disaster&amp;#8220;.  One of his main points appears to be that corporate risk management, by attempting to boil down risks to something easily quantifiable (&amp;#8220;trying to balance an unjustified estimate of cost of failure against a wild-ass guess multiplied &lt;a href='http://www.chakraborty.ch/?p=94'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=94</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=94</feedburner:origLink></item><item><title>Modularizing Security Functionalities</title><link>http://feedproxy.google.com/~r/TheShivling/~3/e1jbyuL4Wgc/</link><category>Architecture &amp; Design</category><category>Best Practices</category><category>Development</category><category>Standards</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">john</dc:creator><pubDate>Fri, 27 Mar 2009 05:27:23 PDT</pubDate><guid isPermaLink="false">http://www.chakraborty.ch/blog/?p=77</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Okay, I made up &#8220;modularizing&#8221;, but I think it nicely fits the idea of this article.</p>
<p>I am a huge fan of the concept of abstracting functions &#8212; i.e. clearly defining what it is you are trying to accomplish with your various bits of software &amp; hardware, defining clear categories for their functionalities, separating them, either physically or logically, and ensuring that everything communicates via clearly defined, standards-compliant interfaces and APIs.</p>
<p>During several early projects of mine, I noticed that the temptation was strong for managers to create all-in-one tools in order to sell the widest package of application functionality conceivable.  This is bad design, if only because different uses and scenarios can have different requirements; addressing these may have unintended network effects on other components of a product, thereby slowing down the whole analysis, development and QA process.</p>
<p>One of my clients has taken the path of a pluggable, modular configuration tool for some of their systems; this is a good model insofar as it allows clear access to different components from a single interface, but the components themselves are not interdependent.</p>
<p>For the purposes of this article, I&#8217;d consider using very basic distinguishing criteria like &#8220;network / communications device&#8221;, &#8220;end-user application&#8221;, &#8220;remote support tool&#8221;, whatnot &#8212; and in the scope of this article, &#8220;security device&#8221; and &#8220;other.&#8221;  I realize that these are fairly theoretical, academic distinctions, but it&#8217;s my firm belief that the idea applies in real life. Such a matrix can be multidimensional &#8212; criteria could include, on the one hand, what the application is used for, and on the other, how it is deployed or managed, OS type, manufacturer, etc.</p>
<p>For example, one of my projects involved the development of a small network security appliance for a specialized scenario (protecting proprietary devices subject to strong regulatory requirements.)  There was constant pressure from sales &amp; marketing to avoid having multiple physical boxes; the field service types also wanted to prevent having to maintain additional distinct hardware.  This was a good example of when it was right to not listen to our customer and push them to accept the idea of having another little small piece of hardware; integrating the security into pre-existing products would have required a huge amount of adaptation, porting, maintenance, testing and other effort, over multiple architectures, teams, countries, whatnot.</p>
<p>&#8220;Security&#8221; is a compelling argument for the separation of protective functions from what&#8217;s being guarded; there may not be a clear, identifiable exploit that you are addressing, but, using the example of network defense, knowing that your authentication, detection, encryption and filtering tools are autonomous from each other reduces the possibility of single points of failure.  I&#8217;m not arguing for an eggshell model of security (crunchy on the outside, squishy on the inside), but it makes things much easier to be able to address an application server&#8217;s security requirements without the need to assume that whatever security you implement on an application level is all you will have.</p>
<p>An even more significant reason to keep things separate (physically, via dedicated, standards-compliant hardware, or virtually, via VMs) is cost reduction &#8212; support and development are simplified.  Despite the appearance of increased complexity from more components, if you are able to quickly and easily swap out a defective element, or create added functionality whose impact on an unrelated system is controlled through a standardized network interface or code API, you no longer have to worry about breaking things that should be out of scope for whatever it is you&#8217;re doing at the moment.</p>
<img src="http://feeds.feedburner.com/~r/TheShivling/~4/e1jbyuL4Wgc" height="1" width="1"/>]]></content:encoded><description>Okay, I made up &amp;#8220;modularizing&amp;#8221;, but I think it nicely fits the idea of this article. I am a huge fan of the concept of abstracting functions &amp;#8212; i.e. clearly defining what it is you are trying to accomplish with your various bits of software &amp;#38; hardware, defining clear categories for their functionalities, separating them, &lt;a href='http://www.chakraborty.ch/?p=77'&gt;[...]&lt;/a&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.chakraborty.ch/?feed=rss2&amp;p=77</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.chakraborty.ch/?p=77</feedburner:origLink></item></channel></rss>
