2011-11-08 16 views
4

我想請教一下原始套接字編程和Linux內核的TCP處理一個典型的問題,內發出SYN_ACK。我已經對linux raw socket programming questionHow to reproduce TCP protocol 3-way handshake with raw sockets correctly?TCP ACK spoofing等一些相同的線程進行了研究,但仍無法獲得解決方案。如何設置Linux內核不發送RST_ACK,這樣我就可以原始套接字

我儘量讓不聽任何端口的服務器,而是從遠程主機嗅探的SYN數據包。服務器做了一些計算後,它會發送SYN_ACK數據包到相應的SYN數據包,以便我可以手動創建TCP連接,而不包括內核的操作。我創建了原始套接字並將SYN_ACK發送給它,但數據包無法連接到遠程主機。當我服務器上的tcpdump(Ubuntu Server 10.04)和客戶端上的wireshark(windows 7)時,服務器返回RST_ACK而不是我的SYN_ACK數據包。在做了一些研究後,我得到的信息是我們無法搶佔內核的TCP處理。

是否還有任何其他的方法來破解或設置內核不響應RST_ACK那些包? 我添加了一個防火牆服務器的本地IP告訴也許有其正在等待數據包的防火牆背後的東西的內核,但仍沒有運氣

+0

您是否嘗試過使用iptables阻止傳出的TCP數據包?希望這可以在讓原始數據包通過的情況下完成。 – Dan

+0

我很想知道這有什麼應用程序......你似乎試圖劫持TCP連接。 –

回答

4

你嘗試drop RST using iptables?

iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP 

應該爲你做這項工作。

+1

顯然,您必須在使用RAW套接字的服務器上設置此規則,以避免您的內核發送RST,因爲您的端口上未顯示任何TCP會話打開 – Jekyll

+0

也請參見http://us.generation-nt .COM /答案/罐的iptables-塊TCP-RST-包只-HELP-173902771.html – patrickmdnet

0

我建議使用IP表,但既然你問黑客內核爲好,這裏是你如何能做到這一點的解釋(我使用的內核4.1.20作爲參考):

當分組被接收(一個sk_buff的),IP協議處理程序將其發送到註冊的網絡協議:

static int ip_local_deliver_finish(struct sock *sk, struct sk_buff *skb) 
{ 
     ... 
     ipprot = rcu_dereference(inet_protos[protocol]); 
     if (ipprot) { 
      ... 
      ret = ipprot->handler(skb); 

假設協議是TCP,處理程序是tcp_v4_rcv:

static const struct net_protocol tcp_protocol = { 
    .early_demux = tcp_v4_early_demux, 
    .handler = tcp_v4_rcv, 
    .err_handler = tcp_v4_err, 
    .no_policy = 1, 
    .netns_ok = 1, 
    .icmp_strict_tag_validation = 1, 
}; 

因此調用tcp_v4_cv。它會試圖找到接收的SKB插座,如果沒有,它會發送復位:

int tcp_v4_rcv(struct sk_buff *skb) 
{ 
    sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); 
    if (!sk) 
     goto no_tcp_socket; 

no_tcp_socket: 
    if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) 
     goto discard_it; 

    tcp_v4_send_reset(NULL, skb); 
    ... 

有您能破解這許多不同的方式。你可以去xfrm4_policy_check函數並且修改AF_INET的策略。或者你可以簡單地將調用xfrm4_policy_check的行註釋掉,以便代碼總是進入discard_it,或者你可以註釋掉調用tcp_v4_send_reset的行(儘管這會產生更多的後果)。

希望這會有所幫助。

相關問題