Làm cách nào để giả mạo cổng nguồn của gói TCP?


7

Có cách nào dễ dàng (hoặc hoàn toàn có thể) để viết lại gói TCP khi nó rời khỏi máy không?
Ví dụ nếu tôi chạy

telnet binfalse.de 22

nó sẽ tìm kiếm một cổng không sử dụng để rời khỏi máy. Trong trường hợp này là 46576:

root@srv % lsof -i -P -n | grep telnet
telnet    10150   user    3u  IPv4 1159425      0t0  TCP 1.2.3.4:46576->87.118.88.39:22 (ESTABLISHED)

Nhưng bây giờ tôi muốn viết lại các gói này để cho máy chủ nghĩ rằng các yêu cầu đến từ cổng 1337, hoặc hơi giống như thế này. Tất nhiên tôi biết rằng tôi không phải mong đợi một câu trả lời trong telnetphiên của mình .

EDIT:
Tất nhiên trên 1337một chương trình khác là lắng nghe, vì vậy nói telnetđể nói qua 1337không phải là lựa chọn ...


4
bạn nên sử dụng gói từ thay vì gói
Mike Pennington

4
Nếu bạn muốn gửi các gói IP không phải là UDP hoặc kết nối TCP được định dạng tốt, bạn cần phải root (hoặc có khả năng phù hợp). Sau đó, bạn có thể gửi các gói IP tình cờ là các gói TCP có cổng nguồn không có thật. Nhưng điều đó sẽ không hoạt động tốt, bởi vì bạn phải thực hiện lại (một phần lớn) ngăn xếp TCP và bạn sẽ không đi xa mà không thể nhận được ACK từ bên kia, sẽ đi nghe chương trình. Do đó, bạn cần định tuyến lại các gói đến một cổng khác khi chúng đến iptables.
Gilles 'SO- ngừng trở nên xấu xa'

Ok, thực sự không muốn thiết lập kết nối, tôi rất vui nếu một gói duy nhất rời khỏi máy của tôi và tất cả các nút nhìn vào gói đều nghĩ rằng nó đến từ :1337... Tôi không quan tâm đến bất kỳ trả lời ...
binfalse

2
nếu đó là trường hợp, bạn nên sử dụng một trình tạo gói nhưscapy
Mike Pennington

Câu trả lời:


6

Giả sử bạn đang nói về Linux, iptablescó một manglebảng có thể thực hiện tất cả các loại điều điên rồ đối với lưu lượng TCP đi. iptablesCác tính năng của NAT cũng có thể hữu ích vì nó thực sự nghe giống như bạn muốn thực hiện "dịch địa chỉ cổng" hoặc "NAT thủ công".


6

Nếu bạn thực sự sử dụng telnetgiao thức (hoặc luồng tcp thô), bạn có thể sử dụng nc -p <source_port>... -tđàm phán các tùy chọn telnet. Tôi có một máy chủ đầu cuối bên dưới chấp nhận kết nối telnet tcp/2015và tôi sẽ lấy nguồn từtcp/31415

# Window 1
[mpenning@hotcoffee ~]$ nc -p 31415 -t 192.168.12.117 2015
????????????????

8024-1(config-if-Po2)#

Để xác minh...

[mpenning@hotcoffee tshark_wd]$ netstat -an | grep 31415
tcp        0      0 192.168.12.236:31415    192.168.12.117:2015     ESTABLISHED
[mpenning@hotcoffee tshark_wd]$

Điều này giả định rằng bạn chưa có ổ cắm cục bộ lắng nghe tcp/31415... nếu bạn đã có ổ cắm tcp cục bộ bị ràng buộc trên cổng mong muốn, iptableslà lựa chọn duy nhất của bạn.


Thật không may, có một chương trình khác nghe trên cổng này. vì vậy nc -pkhông có lựa chọn. Nhưng tuy nhiên không thể xấu khi liệt kê nó ở đây, thx ;-)
binfalse

@binfalse, giúp tôi hiểu ... bạn có muốn kết nối TCP được thiết lập không, hoặc chỉ giả mạo một số gói từ một cổng nguồn nhất định (ngay cả khi một chương trình khác đang nghe trên cùng một cổng đó)?
Mike Pennington

Tôi có một công cụ nghe tại cảng X. Tôi muốn gửi một số gói (ví dụ với telnet hoặc netcat hoặc bất cứ thứ gì) từ cùng một máy đến một máy chủ, nhưng muốn máy chủ đó trả lời cổng X. Nhưng vì đã có một cái gì đó ràng buộc với cổng, Xlệnh của bạn nc -p X [...]không hoạt động.
binfalse

Tôi hiểu lý do tại sao nckhông hoạt động ... Tôi đang cố gắng tìm hiểu tại sao bạn không sử dụng trình tạo gói như scacco
Mike Pennington

Hey cảm ơn rất nhiều, scapylàm việc tốt Chưa bao giờ nghe nói về một cái gì đó như thế!
binfalse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.