<DIV>
<DIR><FONT size=2>
<P>If this is a duplicate, sorry about that but I kept getting receipt errors according to the UK regulators---  whatever?</P>
<P>-------------</P>
<P>All,</P>
<P>Brief synopsis: A rootkit is installed that initiates a reverse shell back</P>
<P>to attacker when triggered by a crafted packet aimed at any port the victim</P>
<P>has open. The reverse shell is TCP with a full handshake (although it's</P>
<P>encrypted) so, I know the IP that is triggering the reverse shell. However,</P>
<P>the IP changes daily (either dynamically, or RAS, or multiple owned systems,</P>
<P>etc) so I can't set rules up to log by IP. Also, the victim is a public web</P>
<P>server and they don't log every connection. When looking at the logs I have</P>
<P>from FW's and victim I can't see what the trigger packet is that wakes up</P>
<P>the reverse shell. The big issue is their IDS and FW only log web traffic</P>
<P>that fits a particular signature string, otherwise port 80 inbound is</P>
<P>dropped cause there is just so much of it.</P>
<P>Problem: I figure the trigger packet is coming inbound to port 80 and</P>
<P>hiding among tons of legit traffic, probably an HTTP continuation packet to</P>
<P>try and spoof proxies and such.... it could be a GET or POST or HEAD or</P>
<P>anything like that too, just don't know since the logs are not capturing</P>
<P>this. Right now, I just don't see the precursor for when the victim</P>
<P>imitates the reverse shell....</P>
<P>So...I want to be able to log all data sent to the server to port 80, try to</P>
<P>capture some server replies, but pass everything else on port 80. For this</P>
<P>purpose 10.1.1.50 will be the server (victim):</P>
<P># This should capture almost all GETs, POSTs and HEADs, etc I would think</P>
<P>log tcp any any -> 10.1.1.50 80 (flags: PA;)</P>
<P>log tcp any any -> 10.1.1.50 80 (flags: SP;)</P>
<P># This should capture any data sent, odd but allowed per RFC</P>
<P>log tcp any any -> 10.1.1.50 80 (flags: S; dsize: >1;)</P>
<P>log tcp any any -> 10.1.1.50 90 (flags: A: dsize: >1;)</P>
<P>#</P>
<P>....</P>
<P>My BIG issue is this: How can I log some server replies but pass everything else. For instance, if I want to capture PUSH/ACKs with HTTP status code, BUT pass all other PA's how can I do it????</P>
<P># This doesn't seem to work, I would think ANY PUSH/ACK without the content of HTTP/1.1 within the first 20 bytes of data would be passed.</P>
<P>pass tcp 10.1.1.50 80 -> any any (flags: AP; content: !"HTTP/1.1 "; depth: 20;)</P>
<P># The below rules I added to discard all other replies:</P>
<P>pass tcp 10.1.1.50 80 -> any any (flags: A;)</P>
<P>pass tcp 10.1.1.50 80 -> any any (flags: RA;)</P>
<P>pass tcp 10.1.1.50 80 -> any any (flags: FA;)</P>
<P>....etc.... all other flag combos.....</P>
<P>#</P>
<P>#the final rules are to capture everything</P>
<P>log tcp any any <> 10.1.1.50 any</P>
<P>log udp any any <> 10.1.1.50 any</P>
<P>log icmp any any <> 10.1.1.50 any</P>
<P>So, the problem is I not only capture all the server HTTP status code</P>
<P>replies but all PUSH/ACKs from the server. I tried making the</P>
<P>pass tcp 10.1.1.50 80 -> any any (flags: AP; content: !"HTTP/1.1 "; depth: 20;)</P>
<P>into a log statement instead and getting rid of the "!" identifier, then</P>
<P>adding a pass statement:</P>
<P>pass tcp 10.1.1.50 80 > any any (flags: AP;) below it, but then I don't get</P>
<P>any packets with a PUSH/ACK.</P>
<P>Does this have something to do with the order of the rules. I'm assuming if</P>
<P>you put a pass statement in that would override a log statement above that</P>
<P>the pass statement would apply? If so, why doesn't my pass statement saying</P>
<P>all PUSH/ACKs without content HTTP/1.1 work, why am I still seeing ALL</P>
<P>PUSH/ACKs? This is beyond me, can't figure it out.... help</P>
<P>John </P></FONT><FONT face=Arial size=2></DIR></FONT></DIV><p><hr SIZE=1>
Do you Yahoo!?<br>
Yahoo! Finance: <a href="http://us.rd.yahoo.com/evt=22055/*http://taxes.yahoo.com/filing.html">Get your refund fast by filing online</a>