HBGary planned to "blow the balls off Nmap"
seclists.org
seclists.org
http://seclists.org/nmap-dev/2011/q1/768
all these leaked emails just remind me why I left the netsec industry so long ago
Just reading this email and knowing these types of people I already know how this came about:
1. random surfing on the web and finds out about LFSR
2. thinks 'this would be awesome for a port scanner'
3. sends email with 'lets do something like nmap but better and faster using this thing i just read about on reddit'
4. 'i done my bit, GO TEAM!'
5. add 'software architect' to email signature
ftfy
You are commenting about this guy's personal, private email. You don't have to like or respect him. But your contribution to this thread --- "This guy sounds like a total asshole in his emails!" --- degrades the discussion. I'm calling you on it. Please, don't be such an asshole.
I think this could be a mission for Redis and Node! Anyone want to hack together a little API/framework for LFSR Generation?
https://bitbucket.org/pnathan/logic-vector/src/598a6cddb080/...
A question I posted on SO some time back may be of interest, it solves a similar problem using an LCG (generating a shuffled range of numbers with no repeats):
http://stackoverflow.com/questions/464476/generating-shuffle...
No reason why it's specific..Simple, 'easy to port'. I was doing a little bit of research about a theory I had but when I figured out enough I never fully completed that little project.+2 years prior.
I'm kinda interested. But I'm opposed to blowing the balls off anything.
(What we learn about Cyber War from the incident)
> It should be FAST AS SHIT
Last I checked, fecal motility was pretty low. Maybe he should get that checked out...[update]
http://seclists.org/nmap-dev/2011/q1/771 :
> I've already had my brain cranking on what
> elite networking code I could now write in
> the kernel and I've always wanted to write
> a badass portscanner too.
And now he can program those both over wifi with his laptop while in his tree fort with the "no parents allowed" sign hung off the side. Afterwards he can rescue his girlfriend from ninjas with is excellent karate skills...Both of those emails seriously boggle my mind...
A security hole in the kernel is a small price to pay for a 0% speed increase.
You are right that it's generally a stupid choice to make, but you're dead wrong in assuming that it's got no benefit at all.
[0] http://read.cs.ucla.edu/click/click
[1] http://www.research.ibm.com/afpa/ "All three components are implemented in the operating system kernel for maximum efficiency"
and then do nothing with it
"I have a great idea, let's make a product that can make us a lot of money. We'll work out the details later, that's the easy part."
How about federal legislation?
Epic.
Older, sadder, wiser.
It gets better, eventually you think of an idea that some tried that did work and feel a little better.
There is, for what it's worth, very little reason why the best scanner need be written in C. Scanners aren't even I/O bound in their most common use case; they're timer-bound.
What about all the packet manipulation code? Bit twiddling tends to be difficult in other languages.
Someone else should write the best possible port scanner and free nmap up to be the giant network profiling system it clearly wants to be.
What exactly does that mean? Nmap certainly isn't constrained to the UX of a port scanner. In fact, their expansion wasn't even in the form of bundled build, you can get all the tools separated, like: nmap, nping, ncat, ncrack...
So actually, it really isn't detracting from its basic purpose, you can still run simple network scans. But, if you got the knowledge, skills and the other tools installed, you can then also do much than advanced network scans, like vulnerability discovery and exploitation, passwords bruteforcing, etc...
Your comment isn't making much sense to me, please help me understand.
Oh, and it takes _for_ _ever_ to run. I'll pastie the 50 line EventMachine scripts I race it with when people on my team get stuck waiting for 12-hour nmap runs.
class HostProbe
module Probe
attr_accessor :bp
def connection_completed
@win = true
end
def unbind
self.bp.closed(self, @win)
end
end
def closed(obj, won)
@inflight_now -= 1
port = @inflight_q.delete(obj)
if won
puts "%TARGET-LISTENING: #{ @target }:#{ port }"
end
fill()
end
def sweep
Generator.new do |g|
(1..65535).each {|port| g.yield port}
end
end
def fill
@inflight_now.upto(@inflight_max) {
@inflight_now += 1
if(port = @sweep.next)
EventMachine::connect(@target, port, Probe) do |c|
c.bp = self
@inflight_q[c] = port
end
end
}
end
def initialize(host, opts={})
@target = host
@sweep = sweep
@inflight_q = {}
@inflight_now = 0
@inflight_max = opts[:inflight_max] || 10
fill()
end
end
EventMachine::run {
HostProbe.new(ARGV[0])
}
I think that may be it? I'm not even going to bother seeing if it evaluates. I write that stupid script once a month or so. There is probably a set of nmap options that crushes it for speed, but with the default options and a firewalled target network (ie: most professional nmap targets), I lap nmap with it.Best Possible Port Scanner... BEST... sorry, it doesn't fit. We could give you say the Best Egregious Scanning Tool, would that work?
If you want a better one written in something else, then get cracking...
Rather I just intensely dislike when people pick language choice to focus on. You pick your language based on what your team knows, and if you can ship with it. Picking it for any other reason just makes you come off in a PHB type of way. If you have real criticisms and suggestions to make, then do so and make the world a better place in the process.
C was and is a good choice. I'd be a lot more surprised if it was written in Java or Perl.
I don't know what the best alternatives would be and while I doubt I can contribute much to the discussion, I've read your other posts on security with interest and would be interested to hear which language you'd pick and why.
Virtually any language will work for this (which is why you should avoid C). About the only thing I'd steer you clear of is a JVM language. The JVM is ordinarily a win, but here, where you want the path-of-least-resistance to getting pcap into your program, it's a bit of a pain. So scratch Scala from the list. Other than that, have fun.
But use Lisp. It's a great first Lisp project.
This isn't a controversial statement. Nobody thinks nmap is the fastest possible scanner. To argue that n+1map should be written in C, you have to make a case for what aspect of a port scanner benefits from C. Which is why I pointed out: nmap doesn't even look I/O bound; it looks timer-bound. And in most cases, neither I/O-bound nor timer-bound programs benefit greatly from locality, cheaper copies, or (within reason) optimized memory allocation and layout.
* When performance matters and can be gained through writing C code --- for instance, if you're compute-bound, or if you need fast access to data structures.
* When building incremental improvements to large C codebases --- ie, writing a loadable kernel module.
* When you're deploying in small-footprint environments.
What are the other cases where C makes sense?
I brought up the C thing not because I want to take potshots at what is probably my favorite language, but because a majority of the developers on HN don't write C, and you'd hate for them not to take a crack at competing with nmap because they had a faulty belief that they'd need to use C.
[1] Yeah, I know it was mostly hacked together using Bash and Perl, but that was a long time ago. Now it's mostly C. I'm suspecting they rewrote the performance-critical stuff in C, and left everything else alone. Not sure, though; I don't follow Git development.
How many other HBGary Federals are there out there?
---
There are some amazing technical innovations in EnCase and the products built on it. Unfortunately, the company has management issues that result in some very poor decisions in many areas, including deployment of software development resources.
The support for reading .pst files? The fact that it can finally handle filesystems besides FAT32 and NTFS? Certainly not it's stability.
EnCase is very good at what it was designed for, which is basically an idiot-proof way for an investigator to comb through a hard drive looking for search terms.
I would argue that technically EnCase isn't even as good as FTK, which is something that pretty much every third-party evaluation of the two products has shown.
I won't disagree that there are some smart folks working at the FBI, and that's not even counting the ones who spend all their time developing "zoom and enhance" software for photo analysis.
In all of these cases one of the main problems seems to be that non-technical people have too much decision making power in technical areas. (I'm not going to address this huge problem here.)
I've lost count of the number of times I've been in a meeting listening to someone talk about something like the "Linear Feedback Shift Register" mentioned in the article.
Unfortunately, technology seems like magic (or snake oil) to people who don't know anything about it...
---
How well would you stand up in the court of public opinion if several years of the internal email messages for your startup were leaked?
I'm very concerned about the rise of the cybersecurity/infosec complex ala the military-industrial complex, but one of the reasons for my concern is that they have very bright, very motivated people working for them who know how to play the D.C. political games.
It is funny, sounds stupid what he is saying, but how many stupid things we say on email, IM etc on a daily basis? Don't judge just because of it...
This coming out from someone as respected (at least in the past) and renowned researcher like Hoglund doesn't give a ringing endorsement to the industry. Was he that desperate for fame and fortune?!
It seems that the people I truly consider hackers rather commit a patch.