Forum Discussion
How to Blocking ULtrasurf?
Hi All,
Is there any irule or configuration on F5 for blocking ultrasurf? I try to use ip intelegence irule on LTM,it did not work because the destination ip address is not registered as bad reputation ip address. I have checked the ip using iprep_lookup or on brigcloud webroot web.
I have also write irule to block on traffic client ssl hello traffic, but i dont know why ultrasurf is still work. Below is the irule
when CLIENT_ACCEPTED {
is there any idea?
Thanks n Regads
- petruk
20 Replies
- BT_90520
Nimbostratus
will url filtering using iRule help meaning there is some url that ultrasurf will always be going - nitass
Employee
just curious if you block client hello, won't it block all access to https website?? - Petruk_Cemeng_7
Nimbostratus
Hi Nitass,the irule is only block the client ssl hello that have signature
804c010300003300000010 (in hex) , not all ssl, because on my testing the ultrasurf have that signature on the client ssl hello.Regards
-Petruk
- Petruk_Cemeng_7
Nimbostratus
Hi BT,
We cannot use URL filtering , because the traffic is ecrypted and we cannot do ssl termination, because no certificate and private key to decrypt.
Thanks n regards
-Petruk
- BT_90520
Nimbostratus
Hi Petruk, was thinking if LTM is placed as proxy before traffic outgoing, will the clientssl be used? kind of changing the game into reverse proxy instead. Nonetheless I heard there is forward ssl proxy coming up that may be more applicable. As long as we can terminate the ssl I believe blocking should be trivial. - nitass
Employee
the irule is only block the client ssl hello that have signature 804c010300003300000010 (in hex) , not all ssl, because on my testing the ultrasurf have that signature on the client ssl hello.have you seen the log (in CLIENT_DATA) in ltm log file? - nitass
Employee
The client ssl hello for that pattern is blocked by this irule, there is no server ssl hello. But i dont know why i still see encrypted traffic.have you tried "reset" instead of "drop"?if {[binary scan [TCP::payload 11] H22 payload_hex] == 1} { if {[class match $payload_hex equals signature_clientsslhello]} { log local0. "payload_hex = $payload_hex" drop } }
- hoolio
Cirrostratus
You might try adding some debug logging of [TCP::payload 11] as that should return 11 bytes of the collected payload. I don't see how binary scan wouldn't return a value for payload_hex if [TCP::payload 11] returns 11 bytes. - hoolio
Cirrostratus
Also, I'm not sure if you want to continuously collect the payloads. Can you collect enough bytes just once in the initial connection to find the bad byte pattern?when CLIENT_ACCEPTED { if { [class match [IP::local_addr] equals block_ip_ultrasurf ] } { log local0. "block ip = [IP::local_addr]" drop } elseif {[TCP::local_port] == 443} { TCP::collect 100 } } when CLIENT_DATA { binary scan [TCP::payload] H* payload_hex log local0. "payload_hex ([string length $payload_hex] chars) = $payload_hex" if {[class match $payload_hex contains signature_clientsslhello]} { drop } TCP::release }
- Petruk_Cemeng_7
Nimbostratus
Thanks Nitass and Hoolio, the error log is not appeared again. But we still cannot block ultrasurf , eventhough the client ssl hello is droped or rejected.
Ultrasurf is still able to send the ssl encrypted traffic, . I test this with version ultrasurf 10.0.1
we checked on the pcap file there is no ssl server hello send from ultrasurf server to client, Is it possible to create ssl encrypted traffic without client ssl hello or server ssl hello?
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com