如何檢測猥瑣的私有SDWAN隧道協議

在前面的一篇文章中,我給出了一種創建相對猥瑣的假TCP隧道的POC:
https://blog.csdn.net/dog250/article/details/107025091

在運營商網絡上玩overlay,有多種玩法。在私有協議之外,當然首選TCP,畢竟運營商待見啊!私有協議搞不好會被限制的。

所以TCP協議大有文章可做,傳統的觀點是對TCP做加法,比如優化其CC算法,增加其丟包探測等,但是這玩意兒有技術門檻啊,不如做減法!把TCP掏空到只剩下運營商設備能認出來的一個空殼子…

這種隧道可以欺騙中間轉發設備相信它們是真正的TCP流,而這些設備同時一廂情願地相信TCP會對它們的丟包,限速等行爲作出有益的反饋。但是很顯然,這是一場騙局。

最終,這種猥瑣的隧道非但不會自我收斂,還會持續侵佔大量的資源。

還有一些同樣猥瑣的隧道協議,美其名曰各類 自研協議

  • 標準UDP隧道,但將UDP協議號改成TCP協議號或者別的。
  • 標準TCP隧道,但將TCP協議號改成UDP協議號或者別的。
  • Raw IP隧道。

那麼,中間轉發設備就這麼忍受被欺騙嗎?它如何檢測出類似這種假TCP隧道呢?

也不難:

  • 定期往兩端發一些已經被ACK的數據,按照TCP規範,TCP應該回復dupACK/SACK。
  • 定期故意丟包,按照TCP規範,重傳包總是會到來。

總之,就是按照TCP的規範,發送一些 端系統TCP一定會迴應的報文 ,然後等待預期的迴應,若沒有收到,就知道自己大概率受騙了。

此時,中間設備即便是發送RST也不會有用,畢竟這可能是一條私有隧道,而兩端運行的只是 看起來像TCP的協議 ,它們不是真正的TCP…

不過,隧道端點如果真的收到了RST,還是哎喲一下的好,以表示我被你打死了,適當配合一下沒壞處。具體來講就是,再也不用RST報文指示的四元組發包,稍微換個IP或者端口,然後假裝來個SYN/SYNACK來回,以表示臣服。


浙江溫州皮鞋溼,下雨進水不會胖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章