
Masscanned (tentu saja namanya terinspirasi oleh masscan) adalah responden jaringan. Tujuannya adalah untuk memberikan jawaban umum terhadap sebanyak mungkin protokol, dan dengan asumsi sesedikit mungkin mengenai maksud klien.
Biarkan mereka bicara dulu.
Sama seperti Masscan, Masscanned mengimplementasikan tumpukan jaringan userlandnya sendiri, mirip dengan Honeyd. Ini dirancang untuk berinteraksi dengan pemindai dan bot oportunistik sejauh mungkin, dan untuk mendukung sebanyak mungkin protokol.
Misalnya, ketika menerima paket jaringan:
ARP who is-at dengan ARP is-at (untuk alamat IP-nya),ICMP Echo Request dengan ICMP Echo Reply ,TCP SYN (port apa pun) dengan TCP SYN/ACK di port mana pun,HTTP (kata kerja apa pun) melalui TCP/UDP (port apa pun) dengan halaman web HTTP 401 . 
Masscanned saat ini mendukung sebagian besar protokol umum pada lapisan 2-3-4, dan beberapa protokol aplikasi.
$ cargo build
# ip netns add masscanned
# ip link add vethmasscanned type veth peer veth netns masscanned
# ip link set vethmasscanned up
# ip -n masscanned link set veth up
# ip addr add dev vethmasscanned 192.168.0.0/31
# ip netns exec masscanned ./target/debug/masscanned --iface veth -v[vv]
# arping 192.168.0.1
# ping 192.168.0.1
# nc -n -v 192.168.0.1 80
# nc -n -v -u 192.168.0.1 80
...
# apt install docker.io
$ cd masscanned/docker && docker build -t masscanned:test .
$ docker run --cap-add=NET_ADMIN masscanned:test
# arping 172.17.0.2
# ping 172.17.0.2
# nc -n -v 172.17.0.2 80
# nc -n -v -u 172.17.0.2 80
...
Penggunaan yang baik dari pemindaian massal adalah dengan menyebarkannya pada VPS dengan satu atau lebih alamat IP publik.
Untuk menggunakan hasilnya, cara terbaik adalah menangkap semua lalu lintas jaringan pada antarmuka yang sedang didengarkan/ditanggapi secara massal . Pcaps kemudian dapat dianalisis menggunakan zeek dan file keluaran biasanya dapat dimasukkan ke dalam instance IVRE .
Dokumentasi tentang cara menyebarkan instance yang dipindai secara massal pada VPS akan segera hadir (lihat Masalah #2).
Network answering machine for various network protocols (L2-L3-L4 + applications)
Usage: masscanned [OPTIONS] --iface <iface>
Options:
-i, --iface <iface>
the interface to use for receiving/sending packets
-m, --mac-addr <mac>
MAC address to use in the response packets
--self-ip-file <selfipfile>
File with the list of IP addresses handled by masscanned
--self-ip-list <selfiplist>
Inline list of IP addresses handled by masscanned, comma-separated
--remote-ip-deny-file <remoteipdenyfile>
File with the list of IP addresses from which masscanned will ignore packets
--remote-ip-deny-list <remoteipdenylist>
Inline list of IP addresses from which masscanned will ignore packets
-v...
Increase message verbosity
-q, --quiet
Quiet mode: do not output anything on stdout
--format <format>
Format in which to output logs [default: console] [possible values: console, logfmt]
-h, --help
Print help information
-V, --version
Print version information
jawaban masscanned terhadap permintaan ARP , untuk permintaan yang menargetkan alamat IPv4 yang ditangani oleh masscanned ( yaitu , alamat yang ada dalam file alamat IP yang diberikan dengan opsi -f ).
Jawabannya berisi kemungkinan alamat MAC pertama berikut ini:
MAC yang ditentukan dengan -a di baris perintah jika ada,MAC antarmuka yang ditentukan dengan -i di baris perintah jika ada,MAC default masscanned , yaitu c0:ff:ee:c0:ff:ee . jawaban masscanned ke frame Ethernet , jika dan hanya jika persyaratan berikut terpenuhi:
alamat tujuan frame harus ditangani masscanned , yang artinya:
MAC sendiri masscanned ,MAC siaran ff:ff:ff:ff:ff:ffMAC multicast yang sesuai dengan salah satu alamat IPv4 yang ditangani masscanned (RFC 1112),MAC multicast yang sesuai dengan salah satu alamat IPv6 yang ditangani oleh masscanned ; Bidang EtherType adalah salah satu dari ARP , IPv4 atau IPv6 .
Catatan: bahkan untuk alamat IP non-multicast, masscanned akan merespons frame L2 yang dialamatkan ke alamat MAC multicast yang sesuai. Misalnya, jika masscanned menangani 10.11.12.13 , ia akan menjawab frame yang dialamatkan ke 01:00:5e:0b:0c:0d .
jawaban masscanned untuk paket IPv4 dan IPv6 , hanya jika:
IP yang ditentukan dalam file ( yaitu , tidak ada opsi -f yang ditentukan atau file kosong),atau
masscanned .Persyaratan tambahannya adalah protokol lapisan berikutnya didukung - lihat di bawah.
Protokol L3+/4 berikut didukung untuk paket IPv4 :
ICMPv4UDPTCPJika protokol lapisan berikutnya bukan salah satunya, paket akan dibuang.
Protokol L3+/4 berikut didukung untuk paket IPv6 :
ICMPv6UDPTCPJika protokol lapisan berikutnya bukan salah satunya, paket akan dibuang.
jawaban masscanned terhadap paket ICMPv4 jika dan hanya jika:
ICMP dari paket masuk adalah EchoRequest ( 8 ),ICMP dari paket masuk adalah 0 . Jika kondisi ini terpenuhi, jawaban masscanned dengan paket ICMP bertipe EchoReply ( 0 ), kode 0 dan muatan yang sama dengan paket masuk, seperti yang ditentukan oleh RFC 792.
jawaban masscanned terhadap paket ICMPv6 jika dan hanya jika:
ICMP adalah NeighborSol ( 135 ) dan :masscannedmasscanned Dalam hal ini, jawabannya adalah paket Neighbor Advertisement ( 136 ) dengan alamat MAC masscanned
atau
ICMP adalah EchoRequest ( 128 ) Dalam hal ini, jawabannya adalah paket EchoReply ( 129 ).
jawaban masscanned untuk paket TCP berikut:
PSH dan ACK , masscanned akan memeriksa SYNACK-cookie , dan jika valid menjawab setidaknya ACK , atau PSH-ACK jika protokol yang didukung (Layer 5/6/7) telah terdeteksi,ACK , maka akan diabaikan,RST atau FIN-ACK , maka akan diabaikan,SYN , maka masscanned mencoba meniru perilaku tumpukan Linux standar - yaitu:PSH , URG , CWR , ECE , maka SYN diabaikan,CWR dan ECE diset secara bersamaan, maka SYN diabaikan,masscanned dengan paket SYN-ACK , mengatur cookie SYNACK di nomor urut. jawaban masscanned ke paket UDP jika dan hanya jika protokol lapisan atas ditangani dan memberikan jawaban.
jawaban masscanned untuk permintaan HTTP apa pun (kata kerja apa pun yang valid ) dengan 401 Authorization Required . Perhatikan bahwa permintaan HTTP dengan kata kerja yang tidak valid tidak akan dijawab.
Contoh:
$ curl -X GET 10.11.10.129
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>
$ curl -X OPTIONS 10.11.10.129
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>
$ curl -X HEAD 10.11.10.129
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead.
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>
$ curl -X XXX 10.11.10.129
[timeout]
Contoh:
$ stun 10.11.10.129
STUN client version 0.97
Primary: Open
Return value is 0x000001
jawaban masscanned ke Client: Protocol SSH : Pesan protokol dengan Server: Protocol :
SSH-2.0-1rn
jawaban masscanned untuk paket Negotiate Protocol Request agar klien mengirim NTLMSSP_NEGOTIATE , yang jawaban masscanned dengan sebuah tantangan.
Contoh:
##$ smbclient -U user \\10.11.10.129\shared
Enter WORKGROUPuser's password:
jawaban masscanned untuk permintaan DNS kelas IN dan tipe A (untuk saat ini). Jawaban yang diberikannya selalu berisi alamat IP tujuan pengiriman kueri.
Contoh:
$ host -t A masscan.ned 10.11.10.129
Using domain server:
Name: 10.11.10.129
Address: 10.11.10.129#53
Aliases:
masscan.ned has address 10.11.10.129
$ host -t A masscan.ned 10.11.10.130
Using domain server:
Name: 10.11.10.130
Address: 10.11.10.130#53
Aliases:
masscan.ned has address 10.11.10.130
$ host -t A masscan.ned 10.11.10.131
Using domain server:
Name: 10.11.10.131
Address: 10.11.10.131#53
Aliases:
masscan.ned has address 10.11.10.131
$ host -t A masscan.ned 10.11.10.132
Using domain server:
Name: 10.11.10.132
Address: 10.11.10.132#53
Aliases:
masscan.ned has address 10.11.10.132
$ cargo test
Compiling masscanned v0.2.0 (/zdata/workdir/masscanned)
Finished test [unoptimized + debuginfo] target(s) in 3.83s
Running unittests (target/debug/deps/masscanned-f9292f8600038978)
running 92 tests
test client::client_info::tests::test_client_info_eq ... ok
test layer_2::arp::tests::test_arp_reply ... ok
test layer_2::tests::test_eth_empty ... ok
test layer_2::tests::test_eth_reply ... ok
test layer_3::ipv4::tests::test_ipv4_reply ... ok
test layer_3::ipv4::tests::test_ipv4_empty ... ok
test layer_3::ipv6::tests::test_ipv6_empty ... ok
test layer_3::ipv6::tests::test_ipv6_reply ... ok
test layer_4::icmpv4::tests::test_icmpv4_reply ... ok
test layer_4::icmpv6::tests::test_icmpv6_reply ... ok
test layer_4::icmpv6::tests::test_nd_na_reply ... ok
test layer_4::tcp::tests::test_synack_cookie_ipv6 ... ok
test layer_4::tcp::tests::test_tcp_fin_ack_wrap ... ok
test proto::dns::cst::tests::class_parse ... ok
test layer_4::tcp::tests::test_tcp_fin_ack ... ok
test layer_4::tcp::tests::test_synack_cookie_ipv4 ... ok
test proto::dns::cst::tests::type_parse ... ok
test proto::dns::header::tests::parse_byte_by_byte ... ok
test proto::dns::header::tests::repl_id ... ok
test proto::dns::header::tests::repl_opcode ... ok
test proto::dns::header::tests::repl_ancount ... ok
test proto::dns::header::tests::repl_rd ... ok
test proto::dns::query::tests::parse_in_a_all ... ok
test proto::dns::header::tests::parse_all ... ok
test proto::dns::query::tests::repl ... ok
test proto::dns::query::tests::reply_in_a ... ok
test proto::dns::rr::tests::parse_all ... ok
test proto::dns::rr::tests::parse_byte_by_byte ... ok
test proto::dns::query::tests::parse_in_a_byte_by_byte ... ok
test proto::dns::tests::parse_qd_all ... ok
test proto::dns::tests::parse_qd_byte_by_byte ... ok
test proto::dns::rr::tests::build ... ok
test proto::dns::tests::parse_qd_rr_all ... ok
test proto::dns::tests::parse_qr_rr_byte_by_byte ... ok
test proto::dns::tests::parse_rr_byte_by_byte ... ok
test proto::dns::tests::parse_rr_all ... ok
test proto::dns::tests::reply_in_a ... ok
test proto::http::tests::test_http_request_line ... ok
test proto::http::tests::test_http_request_no_field ... ok
test proto::http::tests::test_http_request_field ... ok
test proto::http::tests::test_http_verb ... ok
test proto::rpc::tests::test_probe_nmap ... ok
test proto::rpc::tests::test_probe_nmap_split1 ... ok
test proto::rpc::tests::test_probe_portmap_v4_dump ... ok
test proto::rpc::tests::test_probe_nmap_split2 ... ok
test proto::rpc::tests::test_probe_nmap_udp ... ok
test proto::smb::tests::test_smb1_session_setup_request_parse ... ok
test proto::smb::tests::test_smb1_protocol_nego_parsing ... ok
test proto::smb::tests::test_smb1_protocol_nego_reply ... ok
test proto::smb::tests::test_smb1_session_setup_request_reply ... ok
test proto::smb::tests::test_smb2_protocol_nego_parsing ... ok
test proto::smb::tests::test_smb2_protocol_nego_reply ... ok
test proto::smb::tests::test_smb2_session_setup_request_reply ... ok
test proto::smb::tests::test_smb2_session_setup_request_parse ... ok
test proto::ssh::tests::ssh_1_banner_cr ... ok
test proto::ssh::tests::ssh_1_banner_crlf ... ok
test proto::ssh::tests::ssh_1_banner_lf ... ok
test proto::ssh::tests::ssh_1_banner_space ... ok
test proto::ssh::tests::ssh_2_banner_cr ... ok
test proto::ssh::tests::ssh_1_banner_parse ... ok
test proto::ssh::tests::ssh_2_banner_parse ... ok
test proto::ssh::tests::ssh_2_banner_lf ... ok
test proto::ssh::tests::ssh_2_banner_crlf ... ok
test proto::stun::tests::test_change_request_port_overflow ... ok
test proto::stun::tests::test_proto_stun_ipv4 ... ok
test proto::stun::tests::test_change_request_port ... ok
test proto::ssh::tests::ssh_2_banner_space ... ok
test proto::stun::tests::test_proto_stun_ipv6 ... ok
test proto::tcb::tests::test_proto_tcb_proto_state_http ... ok
test proto::tests::dispatch_dns ... ok
test proto::tcb::tests::test_proto_tcb_proto_state_rpc ... ok
test proto::tcb::tests::test_proto_tcb_proto_id ... ok
test proto::tests::test_proto_dispatch_http ... ok
test proto::tests::test_proto_dispatch_ssh ... ok
test proto::tests::test_proto_dispatch_ghost ... ok
test proto::tests::test_proto_dispatch_stun ... ok
test smack::smack::tests::test_anchor_end ... ok
test smack::smack::tests::test_multiple_matches_wildcard ... ok
test smack::smack::tests::test_multiple_matches ... ok
test smack::smack::tests::test_anchor_begin ... ok
test smack::smack::tests::test_http_banner ... ok
test synackcookie::tests::test_clientinfo ... ok
test synackcookie::tests::test_ip4 ... ok
test synackcookie::tests::test_ip4_dst ... ok
test synackcookie::tests::test_ip4_src ... ok
test synackcookie::tests::test_ip6 ... ok
test synackcookie::tests::test_key ... ok
test synackcookie::tests::test_tcp_dst ... ok
test synackcookie::tests::test_tcp_src ... ok
test smack::smack::tests::test_wildcard ... ok
test smack::smack::tests::test_proto ... ok
test smack::smack::tests::test_pattern ... ok
test result: ok. 92 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
# ./test/test_masscanned.py
INFO test_arp_req......................................OK
INFO test_arp_req_other_ip.............................OK
INFO test_ipv4_udp_dns_in_a............................OK
INFO test_ipv4_udp_dns_in_a_multiple_queries...........OK
INFO test_ipv4_tcp_ghost...............................OK
INFO test_ipv4_tcp_http................................OK
INFO test_ipv4_tcp_http_segmented......................OK
INFO test_ipv4_tcp_http_incomplete.....................OK
INFO test_ipv6_tcp_http................................OK
INFO test_ipv4_udp_http................................OK
INFO test_ipv6_udp_http................................OK
INFO test_ipv4_tcp_http_ko.............................OK
INFO test_ipv4_udp_http_ko.............................OK
INFO test_ipv6_tcp_http_ko.............................OK
INFO test_ipv6_udp_http_ko.............................OK
INFO test_icmpv4_echo_req..............................OK
INFO test_icmpv6_neighbor_solicitation.................OK
INFO test_icmpv6_neighbor_solicitation_other_ip........OK
INFO test_icmpv6_echo_req..............................OK
INFO test_ipv4_req.....................................OK
INFO test_eth_req_other_mac............................OK
INFO test_ipv4_req_other_ip............................OK
INFO test_rpc_nmap.....................................OK
INFO test_rpcinfo......................................OK
INFO test_smb1_network_req.............................OK
INFO test_smb2_network_req.............................OK
INFO test_ipv4_tcp_ssh.................................OK
INFO test_ipv4_udp_ssh.................................OK
INFO test_ipv6_tcp_ssh.................................OK
INFO test_ipv6_udp_ssh.................................OK
INFO test_ipv4_udp_stun................................OK
INFO test_ipv6_udp_stun................................OK
INFO test_ipv4_udp_stun_change_port....................OK
INFO test_ipv6_udp_stun_change_port....................OK
INFO test_ipv4_tcp_empty...............................OK
INFO test_ipv6_tcp_empty...............................OK
INFO test_tcp_syn......................................OK
INFO test_ipv4_tcp_psh_ack.............................OK
INFO test_ipv6_tcp_psh_ack.............................OK
INFO test_ipv4_udp_empty...............................OK
INFO test_ipv6_udp_empty...............................OK
INFO Ran 41 tests with 0 errors
Anda juga dapat memilih pengujian apa yang akan dijalankan menggunakan variabel lingkungan TESTS
TESTS=smb ./test/test_masscanned.py
INFO test_smb1_network_req.............................OK
INFO test_smb2_network_req.............................OK
INFO Ran 2 tests with 0 errors
kata kerja :
initrecvsenddrop $ts arp $verb $operation $client_mac $client_ip $masscanned_mac $masscanned_ip
$ts eth $verb $ethertype $client_mac $masscanned_mac