Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security Pen-Test
[Top] [All Lists]

Re: Multiple Spoofed HTTP Requests

Subject: Re: Multiple Spoofed HTTP Requests
Date: Sat, 03 Sep 2005 19:29:09 +0200
kuffya@gmail.com wrote:
Hi list, I've used a variety of tools such as Nemesis, Packet
Xcalibur & Libnet GUI to craft customized packets. Using such tools,
you can create packets at layers 2 up to 5 possibly spoofing your
source IP, port numbers or whatever you see fit. The question is :
Would it be possible to craft a HTTP request(or multiple requests)
using a spoofed IP address? I'm inclined to consider that it's not,
the reason being you must have a 3-way handshake established before
you can start talking application layer protocols (such as HTTP). If
you use a spoofed IP address, then there's no way of doing that. On
the other hand, I might be totally wrong, that's why I'm asking the
list, for the list is wise. If, however, it is possible could you
please give me some directions on how to do it?

Thanks a lot S.


Theoretically it is possible, practically it is unlikly to find a device that is vulnerable.


The attack is due to something allready described in 1989 by Steve Belovin in his 'Security Problems in the TCP/IP Protocol Suite'.
quoted:
"One of the more fascinating security holes was first described by Morris[7]. Briefly, he used TCP sequence number prediction to construct a TCP packet sequence without ever receiving any responses from the server. This allowed him to spoof a trusted host on a local network."


<blunt>
code might look like:
send syn
wait (guessed_rtt)
untill (predicted_count) { send syn-ack+predicted_count; repeat }
contine proc untill all date (request) is sent.
</blunt>

If your calculations serve you correct one of the packets will be valid.

There are a couple of obstacles besides the obvious that you cannot see the responses from the server.
1. Current day systems use non-predictable sequence numbers.
Nmap does predictions when using the -O option.
# nmap -O 192.168.0.3
[..]
TCP Sequence Prediction: Class=random positive increments
Difficulty=3480899 (Good luck!)
TCP ISN Seq. Numbers: 10FE9D2 17A073D B855E2 9CC74D 11C4BCC B1711C
[..]


2. Given the above, you would have to send alot of packets, which would be very (very) noisy.

3. If the above are good you would have to make sure no error packets are sent from the spoofed source address.

Certain attacks have taken place using this technique.
Mitnick used it against Tsutomu (be it with a different protocol than http).

References
http://www.cs.columbia.edu/~smb/papers/
http://www.securityfocus.com/print/infocus/1674

G'Day
Kaj

------------------------------------------------------------------------------
Audit your website security with Acunetix Web Vulnerability Scanner:


Hackers are concentrating their efforts on attacking applications on your website. Up to 75% of cyber attacks are launched on shopping carts, forms, login pages, dynamic content etc. Firewalls, SSL and locked-down servers are futile against web application hacking. Check your website for vulnerabilities to SQL injection, Cross site scripting and other web attacks before hackers do! Download Trial at:

http://www.securityfocus.com/sponsor/pen-test_050831
-------------------------------------------------------------------------------

<Prev in Thread] Current Thread [Next in Thread>