সরাসরি পর্বে যান
পর্ব ২৪ · ৮০-এর মধ্যে · মডিউল ৪

Packet দেখে বোঝা — নিজের network-এ tcpdump আর Wireshark

Reading Packets — tcpdump & Wireshark on Your Own Network

Taught in Bangla, this lesson teaches authorised packet analysis on your own network: permission first, tcpdump and BPF filters, Wireshark display filters and follow stream, decoding IP and TCP headers, reading handshakes, DNS, HTTP and TLS ClientHello from samples, what encryption hides and does not, flow records versus full capture, finding a suspicious device through beaconing, and anonymising captures before sharing them.

এই পর্বে যা শিখবেন

  • Packet capture কী, কোন জায়গা থেকে কী দেখা যায়, আর কোথায় অনুমতি লাগে
  • নিজের host-এ tcpdump আর BPF filter, Wireshark-এর display filter ও follow stream
  • নমুনা থেকে IP ও TCP header, handshake, DNS, HTTP আর TLS ClientHello পড়া
  • Encryption কী লুকায় আর কী লুকায় না, আর full capture বনাম flow-র হিসাব
  • Beaconing, অচেনা DNS আর বড় outbound transfer দেখে একটি সন্দেহজনক device খোঁজা
  • Capture সংরক্ষণ, গোপনীয়তা আর ভাগ করার আগে anonymise করা

১ · আগে অনুমতি, তারপর capture

এই পর্বের প্রথম নিয়ম: Capture করবেন শুধু নিজের যন্ত্রে, নিজের network-এ, অথবা যে network-এর দায়িত্বশীল ব্যক্তির কাছ থেকে লিখিত অনুমতি পেয়েছেন সেখানে। ক্যাফে, হোস্টেল, অফিস বা প্রতিবেশীর Wi-Fi-তে অন্যের traffic ধরা অন্যের ব্যক্তিগত যোগাযোগে আড়ি পাতা। এটি অনৈতিক, আর আইনে অপরাধ হতে পারে। আইনের কথা পর্ব ৬-এ পড়ুন। এই পাতা আইনি পরামর্শ নয়।

এই পর্বের সব packet ডেটা বানানো নমুনা। ঠিকানাগুলো documentation-এর জন্য সংরক্ষিত (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24), আর নামগুলো example.com-এর। কোনো আসল traffic ধরা হয়নি। চালানো যায় এমন কোডও শুধু লেখায় দেওয়া স্থির ডেটা পড়ে।

পোস্ট অফিসের কথা ভাবুন। প্রতিটি খামের ওপরে প্রেরক আর প্রাপকের ঠিকানা লেখা থাকে। ডাকঘরের রেজিস্টার খাতায় থাকে কোন খাম কখন এলো, ওজন কত। আর খামের ভেতরে থাকে চিঠি। Network-এর packet ঠিক এমন খাম। Packet capture মানে যা যাচ্ছে তার কপি রেখে দেওয়া, খাম আর চিঠি দুটোই। আপনি network-এর জিনিস আটকান না, শুধু কপি রাখেন।

কেন দরকার? কারণ log বলে software কী ভেবেছে, আর packet বলে তারে আসলে কী গেছে। App বলছে “server সাড়া দেয়নি”, firewall বলছে “কিছু আটকাইনি”। Capture দেখিয়ে দেবে কোন দাবি ঠিক। Protocol-এর ভিত্তি জানতে TCP সংযোগ, আর প্রথম পরিচয়ের জন্য network-এর টুল পর্বটি দেখতে পারেন। এখানে আমরা রক্ষকের চোখে পড়ব। Network-এর ঝুঁকি আগে দেখেছেন পর্ব ২১-এ, firewall-এর নিয়ম পর্ব ২২-এ, আর স্বয়ংক্রিয় detection পর্ব ২৩-এ। Capture সেগুলোর alert যাচাই করার হাতিয়ার।

কোথায় দাঁড়িয়ে দেখছেন, সেটিই ঠিক করে কী দেখবেন

Switch সাধারণত একটি frame শুধু প্রাপকের port-এ পাঠায়। তাই নিজের ল্যাপটপে capture করলে আপনি মূলত নিজের traffic-ই দেখবেন। Promiscuous mode চালু থাকলেও switch-এ এর বেশি কিছু আসে না। প্রতিষ্ঠানের নিরাপত্তা দল তাই নির্দিষ্ট জায়গায় SPAN port বা network TAP বসায়। দুটিই traffic-এর কপি একটি পর্যবেক্ষণ যন্ত্রে পাঠায়। SPAN চাপের সময় কিছু packet ফেলতে পারে। TAP বেশি নির্ভরযোগ্য, তবে যন্ত্র লাগে।

তিনটি দেখার জায়গা

Where you capture decides what you see

Capture-এর তিনটি অবস্থান: host, switch আর network-এর প্রান্ত Internet Firewall Switch আপনার host হিসাব PC অভ্যর্থনা PC C B A প্রান্ত: বাইরেযাওয়া traffic SPAN/TAP: এইsegment-এর সব
ছবি ২৪.১ — A, নিজের host: শুধু নিজের traffic, অনুমতি সহজ। B, SPAN বা TAP: ভেতরের host থেকে host-এর traffic-ও দেখে, লিখিত অনুমতি লাগে। C, network-এর প্রান্ত: ভেতরের দুই host-এর কথা দেখে না, আর NAT-এর আগে না পরে তা ঠিক করে কোন IP দেখবেন।

২ · tcpdump — নিজের host-এ ধরা আর পড়া

tcpdump হলো command line-এর সবচেয়ে প্রচলিত capture টুল। এটি ধরা packet সরাসরি পর্দায় দেখাতে পারে, অথবা pcap file-এ লিখতে পারে। সার্ভারে সাধারণত গ্রাফিক্যাল টুল থাকে না, তাই এটিই ভরসা।

নিচের কমান্ডটি নিজের host-এর জন্য একটি উদাহরণ, পাতায় চালানোর জন্য নয়। ধরে নিন 192.0.2.10 আপনার নিজের ল্যাপটপ। প্রতিটি অংশ কেন আছে, ধাপে ধাপে দেখুন। উদ্দেশ্য সব কুড়িয়ে নেওয়া নয়, ঠিক যতটুকু দরকার ততটুকু ধরা।

sudo tcpdump -i eth0 -n -s 96 -c 5000 -w own-host.pcap 'host 192.0.2.10 and tcp port 443'
  1. sudo tcpdump: Capture করতে সাধারণত বিশেষ অধিকার লাগে। তাই এখানে sudo আছে। Root হিসেবে চললে অনেক build অধিকার ছেড়ে দেয়, আর -Z দিয়ে কোন user হবে তা বলা যায়।
  2. -i eth0: কোন interface থেকে ধরবেন। এখানে eth0 শুধু উদাহরণের নাম। আপনার যন্ত্রে নাম আলাদা হতে পারে, tcpdump -D তালিকা দেখায়।
  3. -n: ঠিকানা আর port-কে নামে না বদলানো। এতে capture নিজে থেকে বাড়তি DNS প্রশ্ন তৈরি করে না, আর আপনার দেখা সংখ্যাগুলো আসল থাকে। পুরোনো লেখায় -nn-ও দেখবেন।
  4. -s 96: প্রতিটি packet-এর প্রথম ৯৬ byte রাখা। একে বলে snaplen. Header থাকে, বেশিরভাগ payload বাদ পড়ে। গোপনীয়তা বাড়ে, file ছোট হয়। তবে এত ছোট capture-এ ClientHello পড়া যাবে না, সেজন্য snaplen বাড়াতে হবে। বর্তমান man page অনুযায়ী default ২৬২,১৪৪ byte, অর্থাৎ প্রায় পুরো packet.
  5. -c 5000: ৫,০০০ packet পরে নিজে থেকে থামা। ভুলে সারারাত চলে disk ভরে যাওয়া এতে ঠেকে।
  6. -w own-host.pcap: পর্দায় না দেখিয়ে কাঁচা packet file-এ লেখা। পরে tcpdump -r বা Wireshark দিয়ে বারবার পড়া যায়। আসল প্রমাণ এই file, পর্দার লেখা নয়।
  7. শেষের filter: এটি BPF ভাষায় লেখা capture filter. শুধু নিজের host-এর TCP 443 ধরা হবে। যা বাদ গেল তা আর কখনো পাবেন না, তাই filter ভেবে লিখুন। Shell যেন ভুল না বোঝে, সেজন্য filter উদ্ধৃতি চিহ্নে রাখা।

আরও কিছু কাজের কমান্ড নিচে আছে। সবই নিজের host বা নিজের file-এর জন্য।

# interface-এর তালিকা
sudo tcpdump -D

# নিজের host-এর DNS, ১০০ packet, সময়সহ পর্দায়
sudo tcpdump -i eth0 -n -c 100 'host 192.0.2.10 and udp port 53'

# SSH দিয়ে ঢুকে capture করলে নিজের SSH সংযোগ বাদ দিন
sudo tcpdump -i eth0 -n -c 200 'host 192.0.2.10 and not port 22'

# ফাইল পড়া: root লাগে না, absolute sequence number দেখায়
tcpdump -n -S -r own-host.pcap

# ফাইল থেকে শুধু যেসব packet-এ SYN বিট আছে
tcpdump -n -r own-host.pcap 'tcp[tcpflags] & tcp-syn != 0'

# ঘণ্টায় একটি file, ২৪টি হলে থামবে
sudo tcpdump -i eth0 -n -s 96 -G 3600 -W 24 \
     -w 'own-%H.pcap' 'host 192.0.2.10'
Filterকী ধরে
host 192.0.2.10এই ঠিকানা প্রেরক বা প্রাপক হলে
src host 192.0.2.10শুধু এখান থেকে বের হওয়া
net 192.0.2.0/24এই subnet-এর traffic
port 53TCP বা UDP-র ৫৩ নম্বর port
tcp port 443 and not host 192.0.2.53৪৪৩, কিন্তু একটি host বাদে
tcp[tcpflags] & tcp-rst != 0RST বিট থাকা packet

tcpdump আর libpcap-এর জন্ম ১৯৮০-এর দশকের শেষে Lawrence Berkeley Laboratory-তে, Van Jacobson, Craig Leres আর Steven McCanne-এর হাতে। ১৯৯৩ সালে McCanne ও Jacobson-এর USENIX প্রবন্ধে BSD Packet Filter-এর নকশা প্রকাশ পায়। Wireshark শুরু করেন Gerald Combs, ১৯৯৮ সালে Ethereal নামে। ২০০৬ সালে নাম বদলে Wireshark হয়।

৩ · একটি header বাইট ধরে পড়া

টুল আমাদের হয়ে সব অনুবাদ করে দেয়। তবু একবার কাঁচা বাইট পড়া উচিত। তাহলে আপনি বুঝবেন টুল কোথা থেকে কথাগুলো বলছে। নিচে ৪০ byte-এর একটি নমুনা: ২০ byte IP header, ২০ byte TCP header. ছোট রাখতে TCP option বাদ দেওয়া হয়েছে, payload নেই। প্রতিটি সারি ৪ byte.

045 00 00 2841c 46 40 00840 06 20 2f12c0 00 02 0a16cb 00 71 5020c9 3a 01 bb2400 00 03 e82800 00 00 003250 02 fa f036e7 b8 00 00
এই ধাপে পড়া হলো
ক্ষেত্র
বাইট
মান
  1. প্রথম byte 45. এক byte-এ দুটি ৪-বিটের মান। 4 মানে IPv4. 5 হলো header-এর দৈর্ঘ্য ৪ byte-এর এককে, তাই ৫ × ৪ = ২০ byte.
  2. Total length 00 28. Hex 28 = ২ × ১৬ + ৮ = ৪০। পুরো IP packet ৪০ byte. ২০ + ২০ = ৪০, তাই ডেটার জায়গা শূন্য।
  3. Flags 40 00. ওপরের বিটগুলোয় DF (Don't Fragment) জ্বলছে। মানে পথে এই packet ভাঙা যাবে না।
  4. 40 06. Hex 40 = ৬৪, এটি TTL. Protocol ৬ মানে পরের স্তর TCP. পরের দুই byte 20 2f হলো header-এর checksum.
  5. Source c0 00 02 0a. প্রতিটি byte দশমিকে: c0 = ১৯২, 00 = ০, 02 = ২, 0a = ১০। অর্থাৎ 192.0.2.10.
  6. Destination cb 00 71 50. cb = ২০৩, 00 = ০, 71 = ১১৩, 50 = ৮০। অর্থাৎ 203.0.113.80. এখানে IP header শেষ।
  7. TCP শুরু, port. c9 3a = ৫১,৫১৪, client-এর সাময়িক port. 01 bb = ৪৪৩, server-এর HTTPS port.
  8. Sequence number. 00 00 03 e8 = ১,০০০। Ack 00 00 00 00 = ০, কারণ এখনো কিছু পাওয়া হয়নি।
  9. 50 02. 5 মানে TCP header ৫ × ৪ = ২০ byte. 02 হলো TCP flags, যেখানে শুধু SYN বিট জ্বলছে। সিদ্ধান্ত: এটি নতুন সংযোগের প্রথম packet.

একই কাজ কোড দিয়েও করা যায়। নিচের JavaScript একটি স্থির hex নমুনা পড়ে। কোনো network ছোঁয় না।

// Decode one fixed, invented IPv4 + TCP header (নমুনা). Nothing is captured.
const hex = `45 00 00 28 1c 46 40 00 40 06 20 2f c0 00 02 0a cb 00 71 50
             c9 3a 01 bb 00 00 03 e8 00 00 00 00 50 02 fa f0 e7 b8 00 00`;
const b = hex.trim().split(/\s+/).map(x => parseInt(x, 16));
const u16 = i => (b[i] << 8) | b[i + 1];
const u32 = i => u16(i) * 65536 + u16(i + 2);
const ip = i => b.slice(i, i + 4).join(".");

const ihl = (b[0] & 0x0f) * 4;           // header length in bytes
console.log("IP  version      :", b[0] >> 4);
console.log("IP  header length:", ihl, "bytes");
console.log("IP  total length :", u16(2), "bytes");
console.log("IP  DF flag      :", (b[6] & 0x40) ? "set" : "clear");
console.log("IP  TTL          :", b[8]);
console.log("IP  protocol     :", b[9], b[9] === 6 ? "(TCP)" : "(other)");
console.log("IP  source       :", ip(12));
console.log("IP  destination  :", ip(16));

// Internet checksum: over the header, the 16-bit sum folds to 0xffff if intact.
let sum = 0;
for (let i = 0; i < ihl; i += 2) sum += u16(i);
while (sum > 0xffff) sum = (sum & 0xffff) + (sum >>> 16);
console.log("IP  checksum ok  :", sum === 0xffff);

const t = ihl;                           // TCP starts right after the IP header
const names = ["FIN", "SYN", "RST", "PSH", "ACK", "URG"];
const flags = names.filter((n, i) => b[t + 13] & (1 << i));
console.log("TCP ports        :", u16(t), "->", u16(t + 2));
console.log("TCP seq / ack    :", u32(t + 4), "/", u32(t + 8));
console.log("TCP header length:", (b[t + 12] >> 4) * 4, "bytes");
console.log("TCP flags        :", flags.join(","));
console.log("TCP window       :", u16(t + 14));
console.log("Payload bytes    :", u16(2) - ihl - (b[t + 12] >> 4) * 4);

আউটপুটে IP source : 192.0.2.10, TCP ports : 51514 -> 443 আর TCP flags : SYN এসেছে, ঠিক stepper-এর মতো। IP checksum ok : true মানে header-এর ১৬-বিট যোগফল গুটিয়ে 0xffff হয়েছে, অর্থাৎ পথে বাইট নষ্ট হয়নি। Payload bytes : 0 এসেছে ৪০ − ২০ − ২০ থেকে। খেয়াল করুন: checksum দুর্ঘটনার ভুল ধরে, ইচ্ছাকৃত বদল নয়। যে packet বদলায়, সে checksum-ও নতুন করে বসাতে পারে।

৪ · নমুনা পড়া — handshake, DNS, HTTP আর ClientHello

TCP handshake

Three-way handshake দুজনের ফোনালাপের শুরুর মতো: “শুনছেন?”, “শুনছি, আপনি শুনছেন?”, “শুনছি।” tcpdump -n -S এই আলাপ এভাবে দেখায়। [S] মানে SYN, আর . মানে ACK বিট জ্বলছে। Sequence-এর হিসাব দেখতে ধাপে ধাপে এগোন।

110:15:02.100 IP 192.0.2.10.51514 > 203.0.113.80.443: Flags [S], seq 1000, win 64240, length 0210:15:02.128 IP 203.0.113.80.443 > 192.0.2.10.51514: Flags [S.], seq 5000, ack 1001, win 65160, length 0310:15:02.129 IP 192.0.2.10.51514 > 203.0.113.80.443: Flags [.], ack 5001, win 502, length 0410:15:02.130 IP 192.0.2.10.51514 > 203.0.113.80.443: Flags [P.], seq 1001:1518, ack 5001, win 502, length 517510:15:02.158 IP 203.0.113.80.443 > 192.0.2.10.51514: Flags [.], ack 1518, win 501, length 0
হিসাব (নমুনা)
client-এর পরের byte
server-এর পরের byte
সংযোগ
  1. লাইন ১, SYN. Client বলছে, আমার sequence শুরু ১০০০। SYN নিজে একটি sequence নম্বর খরচ করে, তাই পরের byte হবে ১০০১।
  2. লাইন ২, SYN-ACK. Server জানাল, তার sequence ৫০০০, আর ack 1001 মানে “এবার ১০০১ পাঠান”। সময়ের ফারাক ১২৮ − ১০০ = ২৮ মিলিসেকেন্ড, এটি মোটামুটি round-trip time.
  3. লাইন ৩, ACK. Client জানাল, ৫০০১ থেকে পাঠাতে পারেন। Handshake শেষ, কিন্তু কোনো ডেটা এখনো যায়নি।
  4. লাইন ৪, প্রথম ডেটা. seq 1001:1518 মানে ৫১৭ byte, যা length 517-এর সঙ্গে মেলে। ৪৪৩ port-এ সংযোগের শুরুতে এত বড় একটি বার্তা সাধারণত TLS ClientHello.
  5. লাইন ৫, প্রাপ্তি স্বীকার. ack 1518 মানে ১৫১৭ পর্যন্ত সব পৌঁছেছে। আবারও প্রায় ২৮ মিলিসেকেন্ড লেগেছে। সংখ্যা মিললে বুঝবেন পথে কিছু হারায়নি।
Capture-এ যা দেখছেনসম্ভাব্য অর্থ
[S] বারবার, কোনো উত্তর নেইপথে firewall ফেলে দিচ্ছে, host বন্ধ, অথবা ফেরার route নেই
[S]-এর উত্তরে [R.]Host আছে, ওই port-এ কেউ শুনছে না, অথবা কোনো যন্ত্র প্রত্যাখ্যান করছে
Handshake ঠিক, ডেটার পরে [R.]Application বা মাঝের কোনো যন্ত্র সংযোগ কেটেছে
একই seq বারবারRetransmission: packet হারাচ্ছে বা পথ ধীর

DNS, HTTP আর ClientHello

একটি সংযোগের আগে সাধারণত DNS থাকে। নিচের ট্যাবগুলোয় তিনটি নমুনা আছে। সবগুলোই বানানো, নিজের ল্যাবের মতো করে সাজানো।

নমুনা
10:20:01.100 IP 192.0.2.10.40112 > 192.0.2.53.53: 31415+ A? shop.example.com. (34)
10:20:01.131 IP 192.0.2.53.53 > 192.0.2.10.40112: 31415 1/0/0 A 203.0.113.80 (50)

প্রথম লাইন প্রশ্ন। 31415 হলো transaction ID, + মানে recursion চাওয়া হয়েছে, A? মানে IPv4 ঠিকানা চাই। দ্বিতীয় লাইন উত্তর। একই ID, 1/0/0 মানে ১টি answer, ০টি authority, ০টি additional record. সময়ের ফারাক ৩১ মিলিসেকেন্ড। ID না মিললে, বা প্রশ্ন ছাড়াই উত্তর এলে, সেটি খতিয়ে দেখার মতো।

নমুনা · নিজের ল্যাবের HTTP, TCP stream
GET /health HTTP/1.1
Host: shop.example.com
User-Agent: lab-check/1.0
Accept: */*

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 2

ok

Plain HTTP-তে সব খোলা: পথ, header, cookie, উত্তর। তাই ল্যাবে সমস্যা খুঁজতে এটি সহজ, আর বাস্তবে এটি বিপজ্জনক। এখানে cookie বা Authorization header থাকলে capture দেখা যে কেউ তা পড়তে পারত।

নমুনা · Wireshark-এর মতো গাছ আকারে
Transport Layer Security
  Handshake Type: Client Hello (1)
  Version: TLS 1.2 (0x0303)
  Cipher Suites (3 suites)
    TLS_AES_128_GCM_SHA256 (0x1301)
    TLS_AES_256_GCM_SHA384 (0x1302)
    TLS_CHACHA20_POLY1305_SHA256 (0x1303)
  Extension: server_name
    Server Name: shop.example.com
  Extension: supported_versions
    Supported Version: TLS 1.3 (0x0304)
  Extension: key_share

এখানে একটি ফাঁদ আছে। Version-এ TLS 1.2 লেখা দেখে ভাববেন না যে client পুরোনো। পুরোনো মধ্যবর্তী যন্ত্রের সঙ্গে মানিয়ে চলতে ClientHello-র এই ঘরটি স্থির রাখা হয়েছে। আসল প্রস্তাব থাকে supported_versions extension-এ (RFC 8446). SNI খোলা থাকায় domain-এর নামও পড়া যাচ্ছে। Handshake-এর বাকি কথা জানতে পর্ব ১২ দেখুন।

৫ · Wireshark — display filter আর stream অনুসরণ

Wireshark একই packet-কে তিন ভাগে দেখায়: ওপরে তালিকা, মাঝে স্তর ধরে খোলা গাছ, নিচে কাঁচা বাইট। Ethernet, IP, TCP, TLS একটির ভেতরে আরেকটি, ঠিক খামের ভেতরে খাম। এখানে বড় কাজ হলো বড় file থেকে দরকারি অংশ বের করা।

মূল ধারণা

Capture filter ঠিক করে কী ধরা হবে, আর ভাষাটি BPF: tcp port 443. Display filter ঠিক করে ধরা packet-এর মধ্যে কী দেখা যাবে, আর ভাষাটি Wireshark-এর নিজের: tcp.port == 443. প্রথমটি ভুল হলে ডেটা হারায়। দ্বিতীয়টি ভুল হলে শুধু দেখা বদলায়। ভাষা দুটি আলাদা, তাই একটির লেখা অন্যটিতে চলে না।

প্রশ্নDisplay filter
এই host-এর সব packetip.addr == 192.0.2.33
নতুন সংযোগের চেষ্টাtcp.flags.syn == 1 and tcp.flags.ack == 0
সব ClientHellotls.handshake.type == 1
একটি domain-এর SNItls.handshake.extensions_server_name contains "example"
DNS প্রশ্নে একটি নামdns.qry.name contains "example"
HTTP অনুরোধhttp.request
পুনরায় পাঠানো packettcp.analysis.retransmission
একটিই সংযোগtcp.stream eq 7

Follow stream হলো একটি packet-এ ডান-ক্লিক করে Follow → TCP Stream বেছে নেওয়া। Wireshark তখন ওই সংযোগের সব packet জোড়া দিয়ে দুই দিকের কথোপকথন দেখায়, আর নিজে থেকে tcp.stream eq N filter বসায়। HTTP-তে এটি পড়া যায়। HTTPS-এ দেখবেন অর্থহীন বাইট, আর সেটিই encryption-এর কাজ।

নিজের browser-এর সমস্যা খুঁজতে একটি পথ আছে। অনেক client SSLKEYLOGFILE নামের environment variable (পরিবেশ চলক) দেখে একটি file-এ session secret লিখতে পারে। Wireshark সেই key log file দিয়ে নিজের capture খুলতে পারে। এটি শুধু নিজের client, নিজের ল্যাব আর পরীক্ষার account-এ করুন। ওই file-এ যে-ই হাত দেবে, সে ওই session পড়তে পারবে। কাজ শেষে file মুছে পরিবেশ চলকটি সরান।

আরও গভীরে: BPF filter kernel-এ একটি ছোট virtual machine-এ চলে, তাই অদরকারি packet ব্যবহারকারীর জগতে আসার আগেই বাদ পড়ে (McCanne ও Jacobson, ১৯৯৩)। পরে Linux-এ eBPF এই ধারণাকে অনেক বড় করেছে। বড় capture সরাসরি Wireshark-এ না খুলে আগে tshark বা Zeek দিয়ে সারাংশ নেওয়া হয়। Zeek-এর শুরু Vern Paxson-এর Bro থেকে (১৯৯০-এর দশক)। তবে dissector-ও software, আর অচেনা file খুলতেই parser-এর ত্রুটি কাজে লাগতে পারে। তাই বাইরের pcap আলাদা ল্যাবে, কম অধিকারে খুলুন।

৬ · Encryption কী লুকায়, কী লুকায় না

সিলকরা খাম ভাবুন। ডাকপিয়ন চিঠি পড়তে পারেন না। কিন্তু খামের ওপরের ঠিকানা, ওজন, কতদিন পরপর চিঠি আসে, সবই দেখতে পান। TLS ঠিক এই সিল। এর বাইরে যা থাকে তাকে বলে metadata. রক্ষকের জন্য এটি ভালো খবর: বিষয়বস্তু না পড়েও অনেক সমস্যা ধরা যায়।

পথের পর্যবেক্ষক HTTPS সংযোগে কী দেখেন

What an on-path observer can see in HTTPS

HTTPS-এ দৃশ্যমান আর লুকানো তথ্য IP ঠিকানা, port, protocol সময়, আকার, packet সংখ্যা DNS নামDoH/DoT হলে লুকায় SNI (domain-এর নাম)ECH হলে লুকায় URL path, header, cookie Password, form, response body
ছবি ২৪.২ — সবুজ খোলা, হলুদ ব্যবস্থার ওপর নির্ভর করে, নীল লুকানো। TLS বিষয়বস্তু রক্ষা করে। কে কার সঙ্গে, কখন, কতটুকু কথা বলল, তা খোলাই থাকে।
  • TLS 1.3: Handshake-এর বড় অংশ encrypted, server-এর certificate-ও (RFC 9846). TLS 1.2-তে certificate খোলা যেত। তাই পুরোনো “certificate দেখে চেনা” নিয়ম এখন অনেক জায়গায় চলে না।
  • DoH আর DoT: DNS প্রশ্ন encrypted পথে যায়। ব্যবহারকারীর গোপনীয়তা বাড়ে, কিন্তু network-এর DNS log ফাঁকা হতে পারে। প্রতিষ্ঠান তাই সাধারণত নিজের resolver ব্যবহারের নিয়ম করে।
  • ECH: RFC 9849 (২০২৬) ClientHello-র ভেতরের অংশ, SNI-সহ, encrypt করার মান। সমর্থন client আর server-ভেদে আলাদা।
  • QUIC: UDP-তে চলে, আর বেশিরভাগ header-ও সুরক্ষিত। ফলে TCP-র হিসাব এখানে চলে না। প্রথম Initial packet খোলা যায় এমন key দিয়ে সুরক্ষিত, তাই QUIC-সচেতন টুল ClientHello পড়তে পারে।
  • TLS fingerprint: JA3 বা JA4-এর মতো পদ্ধতি ClientHello-র খোলা মান থেকে একটি ছাপ বানায়। এটি ইঙ্গিত, প্রমাণ নয়। অনেক বৈধ software একই ছাপ দিতে পারে।

বিষয়বস্তু পড়তেই হলে প্রতিষ্ঠানগুলো TLS inspection ব্যবহার করে। এতে নিজের managed device-এ একটি বিশ্বস্ত CA বসে। এর ঝুঁকি, নীতি আর কর্মীদের জানানোর বিষয়টি পর্ব ১২-এ আছে। অনুমতি আর স্বচ্ছতা ছাড়া এটি করা যায় না।

৭ · Flow record বনাম full packet capture

ডাকঘরের রেজিস্টার খাতায় প্রতিটি চিঠির কপি থাকে না। থাকে শুধু কে, কাকে, কখন, কত ওজন। Flow record ঠিক এই খাতা। এটি একটি সংযোগের সারাংশ, যা 5-tuple দিয়ে চেনা হয়: source IP, destination IP, source port, destination port, protocol. সঙ্গে থাকে সময়, packet আর byte-এর সংখ্যা।

NetFlow Cisco-র কাছ থেকে এসেছে। এর version 9 বর্ণনা করে RFC 3954 (২০০৪)। IETF-এর মান IPFIX, যার মূল বিবরণ RFC 7011 (২০১৩)। অনেক router আর firewall এগুলো পাঠাতে পারে। ব্যস্ত যন্ত্রে সাধারণত sampling চলে, যেমন ১,০০০ packet-এ একটি। খরচ কমে, কিন্তু ছোট সংযোগ চোখ এড়াতে পারে। Sampling হার দিয়ে গুণ করা সংখ্যা তাই আনুমানিক।

প্রশ্নFlow recordFull packet capture
কে কার সঙ্গে, কত byteপাওয়া যায়পাওয়া যায়
URL, query, payloadনেইEncrypted না হলে আছে
Handshake কেন ব্যর্থসীমিতহুবহু দেখা যায়
জায়গার খরচকমঅনেক বেশি
গোপনীয়তার ঝুঁকিআছে, তবে কমসবচেয়ে বেশি
রাখার সময়মাস বা তারও বেশি হতে পারেপ্রায়ই দিন বা ঘণ্টা

জায়গার হিসাব

কাল্পনিক একটি অফিসের গড় traffic ধরুন ১০০ Mbps, গড় packet ৮০০ byte. প্রতি সেকেন্ডে ৫০০টি নতুন flow, প্রতি record ৫০ byte. সব সংখ্যাই ধরে নেওয়া।

  • Full capture: 100,000,000 ÷ 8 = 12,500,000 byte/s. এক দিনে 12,500,000 × 86,400 = ১.০৮ TB. ৩০ দিনে ৩২.৪ TB.
  • ৯৬ byte snaplen: Packet/s = 12,500,000 ÷ 800 = 15,625. প্রতিদিন 15,625 × 96 × 86,400 = ১২৯.৬ GB, অর্থাৎ ১২ শতাংশ।
  • Flow: 500 × 50 × 86,400 = ২.১৬ GB প্রতিদিন। এটি full capture-এর ৫০০ ভাগের এক ভাগ।

নিচের কোড কয়েকটি কাল্পনিক flow record জোড়া দিয়ে প্রতি host-এর সারাংশ বানায়। এই পর্বের কাল্পনিক অফিসে 192.0.2.33 হলো অভ্যর্থনার PC.

// Flow summary on toy records (নমুনা): one hour, sizes in MB. No real traffic.
const flows = [ // src, dst, port, outMB, inMB
  ["192.0.2.10", "203.0.113.80",  443,   2.10,  48.00],
  ["192.0.2.10", "203.0.113.90",  443,   1.40,  22.50],
  ["192.0.2.10", "198.51.100.53",  53,   0.01,   0.02],
  ["192.0.2.20", "203.0.113.5",   443,   0.60, 310.00],
  ["192.0.2.20", "198.51.100.53",  53,   0.02,   0.03],
  ["192.0.2.33", "198.51.100.7",  443, 140.00,   1.20],
  ["192.0.2.33", "198.51.100.7",  443, 138.50,   1.10],
  ["192.0.2.33", "198.51.100.7",  443, 133.20,   0.90],
  ["192.0.2.33", "198.51.100.53",  53,   0.04,   0.05],
  ["192.0.2.40", "203.0.113.120", 443, 220.00,  35.00],
];
const MIN_OUT_MB = 100, MIN_RATIO = 10;    // thresholds are a policy choice

const hosts = {};
for (const [src, dst, port, out, inn] of flows) {
  const h = hosts[src] ??= { flows: 0, out: 0, inn: 0, dsts: new Set() };
  h.flows++; h.out += out; h.inn += inn; h.dsts.add(`${dst}:${port}`);
}
console.log("source       flows dests   outMB    inMB  out/in  note");
const rows = Object.entries(hosts).sort((x, y) => y[1].out - x[1].out);
for (const [src, h] of rows) {
  const ratio = h.out / h.inn;
  const note = h.out >= MIN_OUT_MB && ratio >= MIN_RATIO ? "REVIEW" : "-";
  console.log(src.padEnd(12), String(h.flows).padStart(5),
    String(h.dsts.size).padStart(5), h.out.toFixed(2).padStart(7),
    h.inn.toFixed(2).padStart(7), ratio.toFixed(2).padStart(7), "", note);
}

192.0.2.33-এর সারিতে 411.74 MB বাইরে, 3.25 MB ভেতরে, অনুপাত 126.69, তাই REVIEW. অভ্যর্থনার PC সাধারণত পাঠায় কম, নামায় বেশি। 192.0.2.40 ২২০ MB পাঠালেও অনুপাত 6.29, তাই চিহ্ন পড়েনি। এটি হয়তো নির্ধারিত backup, তবে এই সীমা নীতির সিদ্ধান্ত। সীমা বদলালে ফলও বদলাবে। REVIEW মানে দোষী নয়, মানে দেখা দরকার।

সংরক্ষণ আর গোপনীয়তা

Capture file একটি সংবেদনশীল ডেটা ভাণ্ডার। অফিসের রেজিস্টার খাতার চেয়ে এটি অনেক বেশি কিছু বলে। Plain HTTP-র password, session cookie, ব্যক্তিগত বার্তা, রোগী বা গ্রাহকের তথ্য, সবই থাকতে পারে। তাই এটিকে প্রমাণের মতো সামলান:

  • কম ধরুন: Data minimization মেনে host, port, সময় আর snaplen সীমিত রাখুন।
  • উদ্দেশ্য লিখুন: কে, কেন, কত সময়ের জন্য capture করলেন, ticket-এ লিখুন।
  • Access সীমিত করুন: Encrypted storage, নির্দিষ্ট কয়েকজনের access, আর access-এর log.
  • অখণ্ডতা রাখুন: সঙ্গে সঙ্গে SHA-256 hash নিন। মামলা বা তদন্তে গেলে chain of custody লাগবে (পর্ব ৬৩-তে বিস্তারিত)।
  • মেয়াদ ঠিক করুন: Retention লিখিত থাকুক। মেয়াদ শেষে মুছে ফেলুন, আর সেই মুছে ফেলা নথিতে রাখুন।

Traffic-এ ব্যক্তিগত তথ্য থাকলে উপাত্ত সুরক্ষা আইনও প্রাসঙ্গিক হতে পারে। পর্ব ৭০ এই নকশা নিয়ে কথা বলবে। আইনের সীমা পর্ব ৬-এ।

৮ · গোলমেলে device খোঁজা

মহল্লার পাহারাদার প্রতিটি মানুষের ব্যাগ খোলেন না। তিনি ধরন দেখেন: কে রোজ রাত ৩টায় একই গলিতে যায়, কে হঠাৎ বড় বস্তা নিয়ে বের হয়। Network-এও তিনটি চেনা ধরন আছে। প্রতিটির নিরীহ ব্যাখ্যাও আছে, তাই আগে যাচাই, পরে সিদ্ধান্ত।

ইঙ্গিতকেন গুরুত্বপূর্ণনিরীহ ব্যাখ্যা
Beaconing: প্রায় সমান বিরতিতে একই ঠিকানায় সংযোগC2 যোগাযোগের সম্ভাব্য লক্ষণUpdate check, NTP, monitoring agent, chat app
অচেনা DNS: এলোমেলো subdomain, অনেক NXDOMAIN, resolver এড়ানোক্ষতিকর software বা DNS দিয়ে ডেটা পাচারের লক্ষণ হতে পারেCDN-এর নাম, ভুল configuration, নিরাপত্তা পণ্য
বড় outbound: স্বাভাবিকের চেয়ে অনেক বেশি পাঠানোExfiltration-এর লক্ষণ হতে পারেBackup, video call, বড় file upload

প্রথম কাজ top talker বের করা। নিচে একটি স্থির tcpdump ধাঁচের নমুনা থেকে awk, sort আর uniq দিয়ে হিসাব করা হয়েছে। Block নিজেই ছোট একটি text file বানায়, কোনো network ছোঁয় না।

# Top talkers from a fixed, invented tcpdump -q style sample (নমুনা).
cat > sample.txt <<'EOF'
10:00:01.10 IP 192.0.2.10.51514 > 203.0.113.80.443: tcp 517
10:00:01.14 IP 192.0.2.10.51514 > 203.0.113.80.443: tcp 120
10:00:01.20 IP 192.0.2.10.40112 > 198.51.100.53.53: UDP, length 34
10:00:02.05 IP 192.0.2.10.51516 > 203.0.113.90.443: tcp 517
10:00:02.31 IP 192.0.2.10.51516 > 203.0.113.90.443: tcp 88
10:00:03.02 IP 192.0.2.10.40118 > 198.51.100.53.53: UDP, length 34
10:00:03.44 IP 192.0.2.10.51514 > 203.0.113.80.443: tcp 96
10:00:04.00 IP 192.0.2.20.44210 > 203.0.113.5.443: tcp 517
10:00:04.40 IP 192.0.2.20.44210 > 203.0.113.5.443: tcp 64
10:00:05.10 IP 192.0.2.20.40120 > 198.51.100.53.53: UDP, length 37
10:00:06.00 IP 192.0.2.33.49822 > 198.51.100.7.443: tcp 1460
10:00:06.01 IP 192.0.2.33.49822 > 198.51.100.7.443: tcp 1460
10:00:06.02 IP 192.0.2.33.49822 > 198.51.100.7.443: tcp 1460
10:00:06.03 IP 192.0.2.33.49822 > 198.51.100.7.443: tcp 1460
10:00:06.04 IP 192.0.2.33.49822 > 198.51.100.7.443: tcp 1460
EOF
echo "== packets per source =="
awk '{split($3,a,"."); print a[1]"."a[2]"."a[3]"."a[4]}' sample.txt |
  sort | uniq -c | sort -rn
echo "== bytes per source =="
awk '{split($3,a,"."); s=a[1]"."a[2]"."a[3]"."a[4]; b[s]+=$NF}
     END {for (k in b) print b[k], k}' sample.txt | sort -rn
echo "== top destination:port =="
awk '{split($5,a,"[.:]"); print a[1]"."a[2]"."a[3]"."a[4]":"a[5]}' sample.txt |
  sort | uniq -c | sort -rn | head -3
rm sample.txt

আউটপুটের দুটি তালিকা আলাদা গল্প বলে। Packet-এ শীর্ষে 7 192.0.2.10, কিন্তু byte-এ শীর্ষে 7300 192.0.2.33. একজন অনেক ছোট কথা বলছে, অন্যজন অল্প কয়েকটি বড় packet পাঠাচ্ছে। Destination-এ 5 198.51.100.7:443 প্রথমে। তাই একটি মাপ দেখে সিদ্ধান্ত নেবেন না। split($3,a,".") ঠিকানা থেকে শেষের port আলাদা করে, আর $NF হলো লাইনের শেষ ঘর, অর্থাৎ দৈর্ঘ্য। Block শেষে নিজের file মুছে ফেলে।

নিয়মিততা মাপা

কত নিয়মিত, সেটি সংখ্যায় বলা যায়। পরপর সংযোগের বিরতি নিন। তারপর coefficient of variation বের করুন:

CV = standard deviation ÷ গড়

ধরুন বিরতি ৬০, ৬১, ৫৯, ৬০, ৬০ সেকেন্ড। গড় ৬০। গড় থেকে দূরত্বের বর্গ ০, ১, ১, ০, ০, যার গড় ০.৪। Standard deviation √০.৪ ≈ ০.৬৩। তাই CV ≈ ০.৬৩ ÷ ৬০ ≈ ০.০১। মানুষের browsing-এ বিরতি খুব ছড়ানো থাকে, তাই CV প্রায়ই ১-এর কাছাকাছি বা বেশি। সংখ্যা অবশ্য নির্দিষ্ট network-এর ওপর নির্ভর করে।

// Beaconing check on toy connection times (নমুনা), in seconds. No real traffic.
const conns = {
  "192.0.2.10 -> 203.0.113.80": [12, 19, 130, 141, 147, 420, 905, 912, 1500, 2210],
  "192.0.2.20 -> 203.0.113.5":  [0, 900, 1800, 2700, 3600, 4500, 5400, 6300, 7200],
  "192.0.2.33 -> 198.51.100.7": [0, 301, 599, 902, 1200, 1498, 1801, 2100, 2402, 2699, 3001],
  "192.0.2.40 -> 203.0.113.120": [100, 400, 700],
};
const known = new Set(["192.0.2.20 -> 203.0.113.5"]); // from the asset inventory
const MIN_INTERVALS = 8, MAX_CV = 0.10;   // tunable policy values

function stats(times) {
  const gaps = times.slice(1).map((t, i) => t - times[i]);
  const mean = gaps.reduce((a, g) => a + g, 0) / gaps.length;
  const v = gaps.reduce((a, g) => a + (g - mean) ** 2, 0) / gaps.length;
  return { n: gaps.length, mean, sd: Math.sqrt(v), cv: Math.sqrt(v) / mean };
}

console.log("pair".padEnd(29), "gaps  mean    sd     CV    verdict");
for (const [pair, times] of Object.entries(conns)) {
  const s = stats(times);
  let verdict = "irregular";
  if (s.n < MIN_INTERVALS) verdict = "too few to judge";
  else if (s.cv <= MAX_CV) verdict = known.has(pair) ? "regular, known job" : "REVIEW";
  console.log(pair.padEnd(29), String(s.n).padStart(4), s.mean.toFixed(1).padStart(6),
    s.sd.toFixed(1).padStart(6), s.cv.toFixed(3).padStart(6), "  " + verdict);
}

192.0.2.33 -> 198.51.100.7-এর গড় বিরতি 300.1 সেকেন্ড, CV 0.007, তাই REVIEW. 192.0.2.20-এর CV 0.000, আরও নিখুঁত, তবু regular, known job, কারণ asset তালিকায় এটি update কাজ। 192.0.2.10-এর CV 1.088, মানুষের মতো ছড়ানো। শেষ সারি too few to judge: মাত্র ২টি বিরতি থেকে কিছু বলা যায় না। নিয়মিত মানেই ক্ষতিকর নয়। আবার অনিয়মিত মানেই নিরাপদ নয়, কারণ সব beacon নিখুঁত হয় না। এই মাপ শুধু অগ্রাধিকার দেয়।

একটি host নিয়ে তদন্ত

এবার অভ্যর্থনার PC নিয়ে পুরো পথটি হাঁটা যাক। ধরে নিন network-টি আপনার প্রতিষ্ঠানের, আর আপনি লিখিত দায়িত্বপ্রাপ্ত। সব ডেটা নমুনা।

  1. Flowকত পাঠাল
  2. সময়কত নিয়মিত
  3. DNSকী নাম
  4. Packetসীমিত capture
  5. Endpointকে করছে
  6. সিদ্ধান্তপরের কাজ
flow সারাংশনমুনা · ১ ঘণ্টা
source       flows dests   outMB    inMB  out/in  note
192.0.2.33       4     2  411.74    3.25  126.69  REVIEW
সংযোগের বিরতিনমুনা
pair                          gaps  mean    sd     CV
192.0.2.33 -> 198.51.100.7      10  300.1    2.2  0.007
DNS logনমুনা
10:00:02 192.0.2.33 A? x7k2q9.sync.example.com. → 198.51.100.7
10:05:02 192.0.2.33 A? m3p8w1.sync.example.com. → 198.51.100.7
10:10:03 192.0.2.33 A? c9t4z6.sync.example.com. → 198.51.100.7
সীমিত captureউদাহরণ ও নমুনা
# ClientHello পড়তে snaplen একটু বড়, আর নির্দিষ্ট দুই host
sudo tcpdump -i eth0 -n -s 600 -c 2000 -w case-1042.pcap \
     'host 192.0.2.33 and host 198.51.100.7'

Server Name: x7k2q9.sync.example.com
Supported Version: TLS 1.3 (0x0304)
Asset ও endpoint নোটনমুনা
device  : reception-pc (192.0.2.33)
অনুমোদিত backup/sync টুল : নেই
ব্যবহারকারীর বক্তব্য      : কোনো sync চালু করেননি
EDR     : ১০:০০-এর আগে থেকে একটি অচেনা process সংযোগ করছে
সিদ্ধান্তনমুনা
verdict : সন্দেহজনক, incident খোলা হলো
প্রমাণ  : case-1042.pcap, flow export, DNS log + SHA-256
পরের কাজ: playbook মেনে device আলাদা, মুছে ফেলা নয়
  1. ধাপ ১, শুরু flow থেকে। Record সস্তা, আর ইতিমধ্যে আছে। 192.0.2.33 এক ঘণ্টায় ৪১১.৭৪ MB পাঠিয়েছে, পেয়েছে ৩.২৫ MB. অনুপাত ১২৬.৬৯। এখনো কোনো সিদ্ধান্ত নয়, শুধু একটি প্রশ্ন।
  2. ধাপ ২, সময়। ১০টি বিরতি, গড় ৩০০.১ সেকেন্ড, CV ০.০০৭। মানুষ এত নিয়মিত কাজ করে না। কোনো software করছে।
  3. ধাপ ৩, DNS. প্রতি ৫ মিনিটে নতুন এলোমেলো subdomain, কিন্তু একই ঠিকানা। এই নামগুলো পরিচিত সেবার তালিকায় নেই। এটি একটি ইঙ্গিত, প্রমাণ নয়।
  4. ধাপ ৪, সীমিত capture. এখন packet দরকার, কিন্তু দুই host-এর মধ্যে, নির্দিষ্ট ticket-এ। TLS বিষয়বস্তু দেখাবে না। তবে SNI-তে সেই এলোমেলো নামটিই আছে, আর version TLS 1.3. পুরো network ধরা হয়নি, এটিই data minimization.
  5. ধাপ ৫, endpoint-এ মেলানো। Network বলে কী ঘটেছে, endpoint বলে কে করেছে। অনুমোদিত কোনো sync টুল নেই, আর ব্যবহারকারীও কিছু চালু করেননি। EDR একটি অচেনা process দেখাচ্ছে।
  6. ধাপ ৬, সিদ্ধান্ত। তিনটি ইঙ্গিত আর endpoint মিলে incident খোলার যুক্তি হলো। সব প্রমাণের hash রাখুন, playbook মেনে device আলাদা করুন, আগেভাগে মুছে ফেলবেন না। পরের ধাপ পর্ব ৬১ আর পর্ব ৬২-তে।

পরীক্ষা ও ইন্টারভিউতে:

  • Capture filter আর display filter-এর পার্থক্য? প্রথমটি কী ধরা হবে ঠিক করে, দ্বিতীয়টি ধরা ডেটা থেকে কী দেখা যাবে।
  • Switch-এ নিজের ল্যাপটপে অন্যের traffic আসে না কেন? Switch frame শুধু প্রাপকের port-এ পাঠায়, তাই SPAN বা TAP লাগে।
  • HTTPS-এ পর্যবেক্ষক কী দেখেন? IP, port, সময়, আকার, আর সাধারণত DNS ও SNI. URL path, cookie, body নয়।
  • Flow কখন, full capture কখন? বড় ছবি আর দীর্ঘ ইতিহাসে flow, মূল কারণ বা প্রমাণে নির্দিষ্ট capture.
  • Beaconing পেলে কী করবেন? Asset তালিকা, DNS আর endpoint-এর সঙ্গে মেলাবেন। শুধু নিয়মিততা দেখে দোষী বলবেন না।

৯ · Capture ভাগ করার আগে — anonymise করা

Vendor support চাইল pcap. Forum-এ কেউ বলল, “file দিন”। এখানেই অনেক ফাঁস ঘটে। মনে রাখুন, IP ঢাকলেই ডেটা নিরাপদ হয় না। DNS নাম, SNI, cookie, MAC ঠিকানা, এমনকি সময়ের ধরনও মানুষ বা প্রতিষ্ঠান চিনিয়ে দিতে পারে।

উপাদানঝুঁকিযা করবেন
PayloadCookie, token, ব্যক্তিগত তথ্যছোট snaplen দিয়ে ছেঁটে ফেলুন
IP ঠিকানাপ্রতিষ্ঠান ও মানুষ চেনা যায়গোপন key-সহ pseudonym দিন
MAC ঠিকানানির্দিষ্ট device চেনা যায়বদলে দিন
DNS নাম, SNI, Hostভেতরের নাম ও ব্যবহারের ধরন ফাঁসআলাদা করে পরীক্ষা, দরকারে সরান
সময়অন্য log-এর সঙ্গে মিলিয়ে পরিচয় বের করাদরকার হলে স্থির পরিমাণে সরান
# ১. মূল file-এর hash রাখুন, মূল file বদলাবেন না
sha256sum own-host.pcap > own-host.pcap.sha256

# ২. আলাদা কপিতে প্রতিটি packet-এর প্রথম ৯৬ byte রাখুন
editcap -s 96 own-host.pcap share-trimmed.pcap

# ৩. file-এর সারাংশ দেখে নিন
capinfos share-trimmed.pcap

৯৬ byte-ও সব মুছে দেয় না। ছোট DNS packet-এর প্রশ্নের নাম ওই সীমার ভেতরেই থাকতে পারে। তাই শেয়ার করার আগে কপিটি নিজে খুলে দেখুন। আর সবচেয়ে ভালো পথ হলো সমস্যাটি পরীক্ষার account দিয়ে নিজের ল্যাবে আবার ঘটিয়ে সেই ছোট capture পাঠানো।

  • Anonymization বনাম pseudonymization: প্রথমটিতে ফিরিয়ে আনার পথ থাকে না। দ্বিতীয়টিতে key বা মিলের তালিকা থাকলে ফেরানো যায়। GDPR-এর চোখে pseudonymized ডেটা এখনো ব্যক্তিগত ডেটা।
  • শুধু IP-র hash যথেষ্ট নয়: IPv4-তে মোট 232 ≈ ৪২৯ কোটি ঠিকানা। সাধারণ hash-এর সব মান একটি কম্পিউটারই বের করে ফেলতে পারে। তাই গোপন key-সহ HMAC বা একটি এলোমেলো মিলের তালিকা দরকার।
  • Prefix-preserving anonymization: Crypto-PAn-এর মতো পদ্ধতি একই subnet-এর ঠিকানাকে বদলের পরেও এক prefix-এ রাখে। বিশ্লেষণ সহজ হয়, তবে subnet-এর গঠন কিছুটা ফাঁস থাকে।
  • চুক্তি আর পথ: Vendor-কে দিলে নিরাপদ upload পথ আর NDA থাকুক। যা পাঠালেন, তার নোট রাখুন।

১০ · AI-এর যুগে packet analysis

AI filter লিখতে, field-এর মানে বোঝাতে আর অপরিচিত protocol ব্যাখ্যা করতে ভালো সাহায্য করে। কিন্তু ভুল filter চুপচাপ ভুল ফল দেয়। আর আসল pcap chat box-এ দেওয়া মানে গোপন ডেটা তৃতীয় পক্ষকে দেওয়া।

AI যা করেকেন ক্ষতিকরযাচাইয়ের উপায়
নেই এমন Wireshark field বানায়Filter কাজ করে না, বা ভুল ধারণা দেয়Wireshark-এর display filter reference, আর জানা নমুনায় পরীক্ষা
Capture filter আর display filter গুলিয়ে ফেলেডেটা হারায় বা error আসেtcpdump -d দিয়ে filter compile, আর ছোট file-এ পরীক্ষা
বলে “HTTPS হলে কেউ কিছু দেখে না”Metadata-র ঝুঁকি বাদ পড়েছবি ২৪.২ আর নিজের ল্যাবের capture
নিয়মিত সংযোগ দেখেই “malware” বলেনিরীহ device-এর বিরুদ্ধে ভুল সিদ্ধান্তAsset তালিকা, DNS, endpoint, মানুষের সিদ্ধান্ত
CVE নম্বর বা standard বানায়রিপোর্টে মিথ্যা তথ্য যায়NVD বা RFC-র মূল পাতা পড়ুন
সমস্যা সারাতে verify=False বলেTLS-এর সুরক্ষাই বন্ধ হয়আসল কারণ খুঁজুন, যেমন CA বা নামের অমিল
পুরো pcap paste করতে বলেCookie, token, ব্যক্তিগত তথ্য ফাঁসশুধু বানানো বা ঢাকা নমুনা লাইন দিন

AI-কে packet নয়, প্রশ্ন আর ঢাকা নমুনা দিন। আর ফলাফলের সিদ্ধান্ত নিজের হাতে রাখুন।

আমি নিজের network-এ নিজের অনুমোদিত host-এর একটি সংযোগের সমস্যা খুঁজছি। নিচে বানানো ঠিকানা দিয়ে ঢাকা কয়েকটি tcpdump লাইন দিলাম। [এখানে ঢাকা নমুনা লাইন দিন, আসল cookie, token বা ব্যক্তিগত তথ্য নয়] ১. প্রতিটি লাইনের flag আর sequence-এর অর্থ সহজ বাংলায় বোঝাও। ২. সমস্যার সম্ভাব্য তিনটি কারণ দাও, আর প্রতিটির পক্ষে-বিপক্ষে প্রমাণ বলো। ৩. কোন log বা সীমিত capture filter দিয়ে যাচাই করব, বলো। Filter-টি BPF না display filter, স্পষ্ট লেখো। ৪. যা তুমি নিশ্চিত নও, তা বলে দাও। কোনো CVE বা RFC নম্বর অনুমানে লিখো না।

AI-এর পরামর্শ কাজে লাগানোর আগে

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।

প্র ০১DoH আর ECH ব্যবহারকারীর গোপনীয়তা বাড়ায়, আবার রক্ষকের দেখার সুযোগ কমায়। এই টানাপোড়েন কীভাবে সামলাবেন?

একসময় পুরো web ছিল প্রায় খোলা। পথের যে কেউ URL আর বিষয়বস্তু পড়তে পারত। HTTPS সেটি বন্ধ করল। এরপরও দুটি জানালা খোলা ছিল: DNS প্রশ্ন আর TLS-এর SNI. বাসার ব্যবহারকারীর জন্য এই জানালা ঝুঁকি। ISP, পাবলিক Wi-Fi-র মালিক বা পথের অন্য কেউ জানতে পারত তিনি কোন সাইটে যাচ্ছেন, হয়তো কোনো হাসপাতাল বা চাকরির সাইটে।

DoH (RFC 8484, ২০১৮) আর DoT (RFC 7858, ২০১৬) প্রথম জানালাটি বন্ধ করে। ECH (RFC 9849) দ্বিতীয়টি। নাগরিকের দিক থেকে এটি বড় লাভ। অসুস্থতা, ধর্ম বা রাজনীতির মতো বিষয়ে কেউ কোন সাইটে গেলেন, শুধু সেই নামটিই অনেক কিছু বলে দেয়। তাই একে শুধু প্রযুক্তির পরিবর্তন ভাবলে ভুল হবে, এটি মানুষের নিরাপত্তারও প্রশ্ন।

কিন্তু একই পরিবর্তন প্রতিষ্ঠানের detection-এ হাত দেয়। অনেক DNS-ভিত্তিক নিয়ম আর domain blocklist network-এ দাঁড়িয়ে নাম দেখার ওপর নির্ভর করত। সেই নাম না থাকলে network-ভিত্তিক পর্যবেক্ষণ দুর্বল হয়। ক্ষতিকর software-ও একই encrypted পথ ব্যবহার করতে পারে, যা রক্ষকের কাজ আরও কঠিন করে।

সমাধান “encryption বন্ধ করা” নয়। যুক্তিটা বরং এমন: দেখার জায়গা বদলাতে হবে। প্রতিষ্ঠানের managed device-এ নিজের অনুমোদিত resolver ব্যবহার করুন, যেখানে log থাকবে। Endpoint-এ EDR আর browser policy রাখুন, কারণ encrypted হওয়ার আগের তথ্য সেখানে দেখা যায়। Network-এ metadata বিশ্লেষণ রাখুন, যেমন flow, সময় আর আকার। আর কর্মীদের জানান কী পর্যবেক্ষণ হয়, কেন হয়, কতদিন থাকে।

নিজের নয় এমন device আর ব্যক্তিগত network-এ এই পর্যবেক্ষণের অধিকার নেই। এই রেখাটি প্রযুক্তির নয়, অনুমতি আর আইনের।

মূল উপলব্ধি: গোপনীয়তা আর দৃশ্যমানতা শত্রু নয়, তবে দুটিকে একই জায়গায় পাওয়া যায় না। নিজের device-এ স্বচ্ছ নীতিসহ দেখুন, পথের মাঝে নয়।

প্র ০২৭৫ সেন্টের হিসাবের গরমিল কীভাবে একটি বড় তদন্তে পৌঁছাল? আজকের রক্ষক এই ঘটনা থেকে কী শেখেন?

১৯৮৬ সালে Lawrence Berkeley Laboratory-তে জ্যোতির্বিদ থেকে system administrator হওয়া Clifford Stoll একটি ছোট হিসাবের গরমিল দেখলেন। দুটি accounting ব্যবস্থায় ৭৫ সেন্টের অমিল। অনেকেই হয়তো এড়িয়ে যেতেন। তিনি খুঁজতে শুরু করলেন, আর একটি অচেনা account পেলেন।

এরপরের অংশই এই পর্বের সঙ্গে জড়িত। Stoll আগন্তুককে সরাসরি আটকে দেননি। তিনি incoming লাইনে প্রিন্টার আর terminal লাগিয়ে কয়েক মাস ধরে তার কাজের হুবহু নথি রাখলেন। বলা যায়, এটি ছিল কাগজে packet capture. সেই নথি থেকেই পথ খুঁজে পাওয়া গেল, সামরিক network-এ ঢোকার চেষ্টা বোঝা গেল। সরকারি সংস্থা শুরুতে গুরুত্ব দেয়নি। শেষে তদন্ত গিয়ে পৌঁছায় পশ্চিম জার্মানিতে। তাঁর বই The Cuckoo's Egg (১৯৮৯) এখনো পড়া হয়। পুরো ঘটনায় কোনো দামি নিরাপত্তা পণ্য ছিল না। ছিল কৌতূহল, ধৈর্য আর গুছিয়ে লেখা নোট, আর সেগুলোই এখনো রক্ষকের প্রধান হাতিয়ার।

শিক্ষা কয়েকটি। এক, ছোট অসংগতিকে গুরুত্ব দিন। আজকের ভাষায়, baseline থেকে সরে যাওয়াই সূত্র। দুই, পর্যবেক্ষণ আগে থেকে থাকতে হবে, অথবা দ্রুত বসানোর প্রস্তুতি থাকতে হবে। তিন, সঙ্গে সঙ্গে সব মুছে ফেললে আপনি জানতেই পারেন না ঢুকল কীভাবে, আর কী নিল। তবে সেকালের “ঢুকতে দিয়ে দেখা” আজ অনুকরণের বিষয় নয়। আজ ঝুঁকি, আইন আর ব্যবসার ক্ষতি মিলিয়ে সিদ্ধান্ত হয়, আর নেতৃত্বের অনুমোদন লাগে। চার, হিসাব রাখুন। Stoll-এর নোটবুকই পরে প্রমাণের মেরুদণ্ড হয়েছিল, যা chain of custody-র আদি রূপ।

মূল উপলব্ধি: বড় ঘটনা প্রায়ই ছোট অসংগতি হয়ে দেখা দেয়। যা মেলে না, সেখানেই তাকান, আর যা দেখলেন তা গুছিয়ে লিখে রাখুন।

প্র ০৩পর্যবেক্ষণের যন্ত্র নিজেই অকেজো হলে কী হয়? Equifax ২০১৭ থেকে এই প্রশ্নের কী শিক্ষা?

২০১৭ সালের Equifax breach-এ প্রায় ১৪.৭ কোটি মানুষের তথ্য ফাঁস হয় বলে প্রকাশিত প্রতিবেদনে বলা হয়েছে। অনেকেই এই ঘটনাকে শুধু একটি patch না করার গল্প হিসেবে মনে রাখেন। কিন্তু মার্কিন House Oversight Committee-র ২০১৮ সালের প্রতিবেদনে আরেকটি শিক্ষা আছে, যা সরাসরি এই পর্বের।

প্রতিবেদন অনুযায়ী, traffic পর্যবেক্ষণের একটি যন্ত্রের certificate মেয়াদোত্তীর্ণ ছিল, প্রায় ১৯ মাস ধরে। TLS inspection যন্ত্রের বৈধ certificate না থাকলে সে traffic খুলে IDS-কে দিতে পারে না। ফলে ওই অংশের encrypted traffic দেখা হচ্ছিল না। Certificate নবায়ন করতেই সন্দেহজনক traffic চোখে পড়ে, আর তখনই ঘটনা ধরা পড়ে। প্রতিবেদনে আরও বলা হয়েছে, ৩০০-র বেশি certificate মেয়াদোত্তীর্ণ ছিল। সময়কাল নিয়ে অন্য সূত্রে ভিন্ন সংখ্যাও আছে (পর্ব ৬৫ দেখুন), তাই ঘটনাটিকে প্রকাশিত প্রতিবেদনের বর্ণনা হিসেবেই পড়ুন।

রক্ষকের শিক্ষা হলো, পর্যবেক্ষণ নিজেই একটি নিয়ন্ত্রণ, আর নিয়ন্ত্রণ নীরবে নষ্ট হতে পারে। আগুনের alarm-এর ব্যাটারি শেষ হলে সে চিৎকার করে না, চুপ করে থাকে। তাই কয়েকটি অভ্যাস দরকার। Sensor-এর health-কে আলাদা alert বানান: কত packet এলো, কত হারাল, শেষ কখন ডেটা এলো। Certificate-এর মেয়াদ নজরে রাখুন, যেমন পর্ব ১২-এ দেখেছেন। মাঝে মাঝে জানা নিরীহ পরীক্ষা-ঘটনা পাঠিয়ে দেখুন detection সত্যিই সাড়া দেয় কি না। আর “কোন অংশ এখন দেখা যাচ্ছে না” তার একটি তালিকা রাখুন। এই তালিকা ঝুঁকির খাতায় উঠলে নেতৃত্বও জানবেন কোথায় অন্ধ জায়গা আছে।

মূল উপলব্ধি: “কোনো alert নেই” মানে দুটি জিনিস হতে পারে: কিছু ঘটেনি, অথবা আপনি অন্ধ। দ্বিতীয়টি বাদ দিতে পর্যবেক্ষণ ব্যবস্থাকেও পর্যবেক্ষণ করুন।

প্র ০৪একটি মাঝারি প্রতিষ্ঠান সব traffic-এর full capture এক বছর রাখতে চায়। আপনি কী পরামর্শ দেবেন?

প্রথম প্রশ্ন: কোন প্রশ্নের উত্তর দিতে চান? “সব রাখি, পরে কাজে লাগবে” নকশা নয়, একটি আশা। হিসাবটি দেখুন। গড়ে ১০০ Mbps হলে দিনে ১.০৮ TB, বছরে ৩৬৫ × ১.০৮ ≈ ৩৯৪ TB. এর সঙ্গে দরকার encrypted storage, replication, backup আর খোঁজার ব্যবস্থা।

দ্বিতীয় প্রশ্ন: লাভ কতটুকু? আজকের বেশিরভাগ traffic encrypted. তাই এত জায়গায় যা জমছে, তার বড় অংশ পড়াই যাবে না। পুরোনো capture-এর কদর থাকে মূলত metadata-র জন্য, আর সেটি flow-তে অনেক সস্তায় পাওয়া যায়। এক বছর আগের ঘটনার তদন্তেও প্রায়ই দরকার হয় কে কার সঙ্গে কথা বলেছিল, কথার প্রতিটি byte নয়।

তৃতীয় প্রশ্ন: ঝুঁকি কত? এক বছরের সব plain DNS, plain HTTP, ভেতরের অ্যাপের টোকেন, সব এক জায়গায়। আক্রমণকারীর কাছে এই ভাণ্ডার সোনার খনি, কারণ এক জায়গা থেকেই সবার তথ্য পাওয়া যায়। ফাঁস হলে আপনি নিজের হাতে নতুন breach তৈরি করলেন। আইনের দিক থেকেও, যে ব্যক্তিগত তথ্য দরকার নেই তা জমানো data minimization-এর উল্টো। Harvest now, decrypt later-এর চিন্তাও আছে: আজকের encrypted file ভবিষ্যতে খোলা যেতে পারে।

ভালো নকশা স্তরে স্তরে হয়। Flow বা Zeek-ধরনের গোছানো log রাখুন মাসের পর মাস, DNS log-ও। Full packet রাখুন ঝুঁকিপূর্ণ অল্প জায়গায়, ছোট rolling buffer-এ, যেমন কয়েক দিন। ঘটনা ঘটলে legal hold দিয়ে নির্দিষ্ট অংশ সংরক্ষণ করুন, যাতে নিয়মিত মুছে ফেলার কাজ সেই প্রমাণ নষ্ট না করে। প্রতিটি স্তরে access log রাখুন, আর লিখিত retention অনুযায়ী মুছে ফেলুন।

মূল উপলব্ধি: যত বেশি রাখবেন, তত বেশি রক্ষা করতে হবে। আগে প্রশ্ন ঠিক করুন, তারপর দেখুন উত্তরের জন্য সবচেয়ে কম কতটুকু লাগে।

প্র ০৫Beaconing detector ৪০টি host দেখাল, আসল সমস্যা ৩টি। এটি কি ব্যর্থ? SolarWinds ২০২০-এর মতো ঘটনা এখানে কী শেখায়?

আগে হিসাব। ধরুন network-এ আসল আক্রান্ত device ৪টি। Detector ৪০টি দেখাল, যার ৩টি সত্যি। তাহলে precision = ৩ ÷ ৪০ = ৭.৫ শতাংশ, আর recall = ৩ ÷ ৪ = ৭৫ শতাংশ। Alert হিসেবে ৭.৫ শতাংশ খারাপ শোনায়। কিন্তু হাজার device থেকে ৪০-এ নামিয়ে আনা, আর তার মধ্যে ৪-এর ৩টি ধরা, একটি অগ্রাধিকার তালিকা হিসেবে কাজের।

আসল প্রশ্ন হলো এই তালিকা কোথায় যায়। সরাসরি device বন্ধ করার স্বয়ংক্রিয় নিয়মে ৩৭টি ভুল সিদ্ধান্ত হবে। মানুষের triage বা threat hunting-এর সারিতে গেলে তা চলতে পারে। আর asset তালিকা দিয়ে update সার্ভার, NTP আর monitoring বাদ দিলে precision অনেক বাড়বে।

৪টির ১টি এখানে ধরা পড়েনি। এর কারণ সহজ: সব ক্ষতিকর যোগাযোগ নিখুঁত নিয়মিত নয়। SolarWinds Orion-এর ২০২০ সালের supply chain ঘটনার প্রকাশিত বিশ্লেষণে দেখা যায়, ক্ষতিকর কোড দীর্ঘ সময় চুপ থেকে, স্বাভাবিক অ্যাপের traffic-এর মতো মিশে থাকার চেষ্টা করেছিল। আর প্রকাশিত বিবরণ অনুযায়ী, ঘটনাটির খোঁজ শুরু হয়েছিল network-এর beaconing দিয়ে নয়, বরং একটি অস্বাভাবিক MFA নিবন্ধনের সন্দেহ থেকে। অর্থাৎ একটি detector-এর ওপর ভরসা করলে এমন ঘটনা ফসকে যেতে পারে।

তাই beaconing, DNS, volume আর identity মিলিয়ে দেখতে হয়। তাহলে বিচ্ছিন্ন দুর্বল ইঙ্গিত মিলে একটি শক্ত ছবি দাঁড়ায়। প্রতিটি যাচাই করা false positive থেকে নিয়ম ঠিক করলে তালিকা ক্রমে ছোট হয়। পর্ব ২৩-এ IDS-এর এই একই হিসাব দেখেছেন, আর পর্ব ৫৬ ও পর্ব ৫৮-তে এটি আরও এগোবে।

মূল উপলব্ধি: Detector-এর মান তার ব্যবহারের জায়গার ওপর নির্ভর করে। দুর্বল ইঙ্গিত মানুষের হাতে যায়, একা সিদ্ধান্ত নেয় না, আর নিখুঁত detector বলে কিছু নেই।

অনুশীলন

সব অনুশীলন বানানো ডেটা বা নিজের ল্যাব নিয়ে। অন্যের network-এ কিছু করবেন না।

  1. জায়গার হিসাব: একটি কাল্পনিক অফিসের গড় traffic ৫০ Mbps, গড় packet ১,০০০ byte, প্রতি সেকেন্ডে ২০০ flow, প্রতি record ৪৮ byte. ৭ দিনের জন্য (ক) full capture, (খ) ১২৮ byte snaplen, (গ) flow record, প্রতিটিতে কত জায়গা লাগবে?

    ৭ দিন = ৬০৪,৮০০ সেকেন্ড। (ক) 50,000,000 ÷ 8 = 6,250,000 byte/s. গুণ ৬০৪,৮০০ = ৩.৭৮ TB.

    (খ) Packet/s = 6,250,000 ÷ 1,000 = 6,250. প্রতি packet-এ ১২৮ byte, তাই 800,000 byte/s. গুণ ৬০৪,৮০০ ≈ ৪৮৩.৮ GB.

    (গ) 200 × 48 = 9,600 byte/s. গুণ ৬০৪,৮০০ ≈ ৫.৮১ GB. Full capture-এর চেয়ে প্রায় ৬৫০ গুণ ছোট। সংখ্যাগুলো ধরে নেওয়া, আর pcap-এর নিজের সামান্য বাড়তি অংশ এখানে ধরা হয়নি।

  2. আউটপুট অনুমান: চালানোর আগে বলুন, নিচের কমান্ড কী ছাপবে?
    cat <<'EOF' | awk '{c[$1]++; b[$1]+=$2}
      END {for (k in c) print c[k], b[k], k}' | sort -rn
    192.0.2.10 100
    192.0.2.33 1460
    192.0.2.10 60
    192.0.2.33 1460
    192.0.2.10 40
    EOF
    3 200 192.0.2.10
    2 2920 192.0.2.33

    c গোনে লাইন, b যোগ করে দ্বিতীয় ঘর। .10-এর ৩ লাইন, ১০০ + ৬০ + ৪০ = ২০০। .33-এর ২ লাইন, ২,৯২০। sort -rn প্রথম সংখ্যায় সাজায়, তাই ৩ আগে। Byte-এ সাজাতে চাইলে sort -k2,2 -rn লাগত, আর তখন .33 আগে আসত।

  3. Filter লিখুন: আপনার নিজের ল্যাপটপ 192.0.2.10-এ DNS ধীর লাগছে। (ক) ২০০ packet-এর একটি capture কমান্ড লিখুন, যা file-এ জমা হবে, শুধু এই host-এর UDP DNS. (খ) Wireshark-এ শুধু DNS উত্তর, যেগুলো আধা সেকেন্ডের বেশি নিয়েছে, দেখার display filter লিখুন।

    (ক) উদাহরণ: sudo tcpdump -i eth0 -n -c 200 -w dns-slow.pcap 'host 192.0.2.10 and udp port 53'. eth0-এর জায়গায় নিজের interface-এর নাম দিন।

    (খ) dns.flags.response == 1 and dns.time > 0.5. dns.time হলো Wireshark-এর হিসাব করা প্রশ্ন-উত্তরের সময়, যা সেকেন্ডে দেখায়। প্রশ্নের আর উত্তরের ID মেলানো এখানে Wireshark নিজেই করে। DoH চালু থাকলে এই capture-এ DNS হয়তো দেখবেন না, সেটি আগে যাচাই করুন।

  4. নীতি সমালোচনা: একটি কাল্পনিক প্রতিষ্ঠানের নিয়ম: “IT দলের যে কেউ যেকোনো সময় অফিস Wi-Fi-র সব traffic full capture করতে পারবে। File থাকবে shared drive-এ, মেয়াদ নেই। Vendor চাইলে email-এ পাঠানো যাবে। কর্মীদের জানানোর দরকার নেই।” কী কী সমস্যা, আর কীভাবে বদলাবেন?
    • অনুমতি নেই: “যে কেউ, যেকোনো সময়” চলবে না। Ticket, উদ্দেশ্য, অনুমোদনকারী আর সময়সীমা লাগবে।
    • স্বচ্ছতা নেই: কর্মীদের লিখিত নীতিতে জানান কী পর্যবেক্ষণ হয়। আইনি পরামর্শ নিন।
    • পরিধি বেশি: নির্দিষ্ট host, port আর সময়ে সীমিত করুন। আগে flow দিয়ে শুরু করুন।
    • Storage: Shared drive নয়। Encrypted জায়গা, সীমিত access আর access log চাই।
    • মেয়াদ: লিখিত retention আর স্বয়ংক্রিয় মুছে ফেলা চাই। মামলার প্রমাণ আলাদা নিয়মে।
    • শেয়ার: Email নয়। ছেঁটে, ঢেকে, নিজে পরীক্ষা করে, নিরাপদ পথে, NDA-সহ পাঠান।
    • অখণ্ডতা: Hash আর chain of custody-র নোট যুক্ত করুন।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমনিজের network-এ একটি সন্দেহজনক host তদন্তের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. লিখিত অনুমতি আর পরিধি নিশ্চিত করা
  2. Flow record থেকে host আর সময় বের করা
  3. নির্দিষ্ট host-এর সীমিত capture নেওয়া
  4. Capture-এর hash নিয়ে নিরাপদে রাখা
  5. Packet, DNS আর endpoint-এর তথ্য মেলানো
  6. সিদ্ধান্ত নিয়ে incident response-এ পাঠানো

একটি TCP SYN-এ seq 1000 আছে। সংযোগ স্বাভাবিক হলে server-এর SYN-ACK-এ কোন ack থাকবে?

  • ack 1000
  • ack 1001
  • ack 5000
  • ack 0

Capture filter আর display filter-এর মধ্যে কোন বক্তব্যটি ঠিক?

  • Capture filter-এ বাদ পড়া packet আর পাওয়া যায় না, display filter file থেকে কিছু মোছে না
  • Display filter চিরতরে packet মুছে দেয়
  • দুটির ভাষা একই, একটির লেখা অন্যটিতে চলে
  • Wireshark-এ শুধু display filter ব্যবহার করা যায়

HTTPS (TLS 1.3, ECH নেই) সংযোগে পথের একজন পর্যবেক্ষক সাধারণত কোনটি পড়তে পারেন না?

  • Server-এর IP ঠিকানা
  • SNI-তে থাকা domain-এর নাম
  • URL-এর path আর cookie
  • Packet-এর আকার আর সময়

NetFlow বা IPFIX flow record-এ সাধারণত কোনটি পাওয়া যায় না?

  • Source আর destination IP
  • Source আর destination port
  • Packet আর byte-এর সংখ্যা
  • HTTP অনুরোধের বিষয়বস্তু

একটি host-এর সংযোগের বিরতির গড় ৬০ সেকেন্ড আর standard deviation ৩ সেকেন্ড। Coefficient of variation কত, আর এর অর্থ কী?

  • ২০, খুব অনিয়মিত
  • ০.০৫, বেশ নিয়মিত, তাই যাচাই করার মতো
  • ০.০৫, তাই নিশ্চিত malware
  • ৫৭, স্বাভাবিক browsing

Vendor support একটি সমস্যা দেখতে নিজের অফিসের pcap চাইছে। শুরুতে কোনটি সবচেয়ে ভালো?

  • পুরো file সরাসরি email করা
  • শুধু IP-র SHA-256 hash বসিয়ে পাঠানো
  • পরীক্ষার account-এ সমস্যা ঘটিয়ে সীমিত capture ছেঁটে, নিজে যাচাই করে নিরাপদ পথে দেওয়া
  • File ZIP করে forum-এ রাখা, যাতে vendor নামাতে পারে

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Capture শুধু নিজের যন্ত্রে বা লিখিত অনুমতি থাকা network-এ। Capture file-কে প্রমাণের মতো রাখুন।
  2. কম ধরুন: host, port, সময় আর snaplen সীমিত। Capture filter ভুল হলে ডেটা হারায়, display filter ভুল হলে শুধু দেখা বদলায়।
  3. SYN, SYN-ACK, ACK আর seq-ack-এর হিসাব মিলিয়ে সংযোগের গল্প পড়া যায়।
  4. Encryption বিষয়বস্তু লুকায়, metadata নয়। DoH আর ECH আরও কিছু লুকায়।
  5. আগে flow, পরে সীমিত packet. ইঙ্গিত মেলান, একটি সংকেত দেখে সিদ্ধান্ত নেবেন না, আর শেয়ারের আগে ছেঁটে ও ঢেকে নিন।

পরের পর্বে: পর্ব ২৫-এ দেখবেন VPN আর ZTNA: IPsec, WireGuard আর application-ভিত্তিক access.

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান