Mac'inizin neyle konuştuğunun gerçek ve güncel bir resmini elde etmek için herhangi bir şey yüklemenize gerek yoktur. Bu laboratuvardaki her araç macOS ile birlikte gelir. Hiçbiri trafiğiniz konusunda üçüncü bir tarafa güvenmenizi gerektirmez ve komutları öğrendikten sonra altısının hepsinin birlikte çalışması yaklaşık on dakika sürer. Yapmayacakları ve önemli olan, size bu bağlantılardan hangilerinin iyi, hangilerinin kötü olduğunu söylemektir; bunun için hala bağlama ihtiyacınız var ve sonunda bu araçların nerede duracağı konusunda dürüst olacağız.
1. lsof — şu anda her açık bağlantı
Unix'te ağ soketi bir dosyadır ve lsof (açık dosyaları listele) bunları listeler. MacOS kılavuz sayfası, -i'ı, internet adresi belirli bir spesifikasyonla eşleşen dosyaların seçilmesi olarak tanımlar - hiçbiri belirtilmeden, her internet soketi. Ana bilgisayar adlarına yönelik çözümleme adreslerini atlamak için -n ve hizmet adlarına yönelik çözümleme bağlantı noktalarını atlamak için -P ekleyin; her ikisi de komutu daha hızlı hale getirir ve çıktıyı yaklaşık olmaktan ziyade kesin hale getirir.
sudo lsof -i -n -P
# example output, trimmed to a few representative lines
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Mail 612 alice 9u IPv4 0x... 0t0 TCP 192.168.1.10:54321->17.57.145.13:993 (ESTABLISHED)
Slack 980 alice 22u IPv4 0x... 0t0 TCP 192.168.1.10:54400->35.186.224.25:443 (ESTABLISHED)
mDNSResp 88 root 4u IPv4 0x... 0t0 UDP *:5353Soldan sağa okuyun: işlem adı ve PID, yerel adres ve bağlantı noktası, -> ve uzak adres ve bağlantı noktası ve bağlantı durumu. ESTABLISHED şu anda aktif, iki yönlü bir bağlantı anlamına gelir. sudo olmadan çalıştırın, yine de kendi süreçlerinizi göreceksiniz; köke sahip olanların buna ihtiyacı var. Bunun size söyleyemediği şey: lsof, Enter'a bastığınız anın anlık görüntüsüdür. Siz komutu çalıştırmadan yarım saniye önce açılan, birkaç kilobayt gönderen ve kapanan bir bağlantı mevcut değildir; bunu yakalamak için onu tekrar tekrar çalıştırmanız veya bir sonraki araca geçmeniz gerekir.
2. nettop — aynı görünüm, ancak canlı
nettop aynı fikrin canlı versiyonudur. Kılavuz sayfası, onu periyodik olarak güncellenen istatistiklerle birlikte "soketlerin veya rotaların bir listesini" görüntüleyen olarak tanımlıyor. -m route onu listeleme yuvalarından yönlendirme tablosu görünümünü listelemeye geçirir; -m tcp veya -m udp bunu bir protokolle sınırlandırır.
nettop -m route
# interactive; press q to quit, or use -l N to print N samples and exit
# example output, trimmed
time interface state bytes_in bytes_out
23:41:02.123 Mail.612 en0 Established 4.2K 1.1K
23:41:02.123 Slack.980 en0 Established 18.6K 6.4KBeş örnek almak ve etkileşimli bir oturum düzenlemek yerine çıkmak için -l 5 ekleyin; çıktıyı bir yere yönlendirmek istiyorsanız kullanışlıdır. nettop, lsof'un anlık görüntü sorununu çözer - bir bağlantının görünmesini, veri aktarımını ve kapanmasını izleyebilirsiniz - ancak aynı tavanı miras alır: bir işlem adı ve bir PID, ikili dosyayı kimin imzaladığıyla ilgili hiçbir şey yok ve terminali kapattığınızda hafıza yok.
3. günlük akışı — sistemin ağ hakkında söyledikleri
macOS, her işlemin ne yaptığına ilişkin birleşik, yapılandırılmış bir günlük tutar ve log stream bunu canlı, filtrelenmiş olarak izlemenize olanak tanır. Kılavuz sayfası, --predicate'ı, alt sistem, kategori, süreç ve mesaj içeriğine göre NPredicate tarzı cümleleri kullanan girişleri filtrelemek olarak tanımlar.
log stream --predicate 'eventMessage contains "network" or subsystem == "com.apple.network"' --info
# live stream; Ctrl-C to stop. Example line, trimmed:
2026-09-14 23:41:05.001 process=nesessionmanager subsystem=com.apple.network "TCP Connection ... state changed to Ready"Bu, altı araç arasında en az ulaşılabilir olanıdır - hacim yüksektir ve yüklem sözdiziminin bir öğrenme eğrisi vardır - ancak aynı zamanda sistem düzeyindeki ağ durumu değişikliklerini ve bağlantı yaşam döngüsü olaylarını, sorumlu alt sistem tarafından etiketlenen sade (imsi) İngilizce ile ortaya çıktıkça ortaya çıkaran tek araçtır. Bunu satır satır okumak yerine, grep'e alınacak bir şey olarak değerlendirin: önemsediğiniz bir işlem adı için grep veya "Wi-Fi" veya "VPN" gibi bir anahtar kelime aracılığıyla iletin.
4. scutil --dns ve dig — Mac'inizin gerçekte çözdüğü şey
Bağlantı gerçekleşmeden önce genellikle bir DNS araması yapılır. scutil --dns, kılavuz sayfası başına "mevcut DNS yapılandırmasını bildirir": hangi çözümleyicilerin yapılandırıldığı, hangisinin varsayılan olduğu ve hangilerinin yalnızca belirli etki alanlarına (bölünmüş DNS, VPN'lerde ortak) uygulandığı.
scutil --dns
# example output, trimmed
DNS configuration
resolver #1
nameserver[0] : 192.168.1.1
if_index : 12 (en0)
flags : Request A records, Request AAAA records
reach : 0x00020002 (Reachable,Directly Reachable Address)dig tek bir soruyu doğrudan yanıtlıyor: bu ad şu anda neyi çözüyor? Kılavuz sayfası onu "esneklik, kullanım kolaylığı ve çıktı netliği" açısından değerli olan "DNS ad sunucularını sorgulamak için esnek bir araç" olarak adlandırıyor.
dig example.com +short
# example output
93.184.216.34Her iki araç da size aramayı hangi uygulamanın tetiklediğini veya sonrasında ne olduğunu söylemez; DNS size yalnızca uygulamanın bağlanmak üzere olduğu (veya zaten bağlanmakta olduğu) adresi verir; bağlantının kendisi lsof, nettop veya güvenlik duvarı günlüğünün size gösterdiği şeydir.
5. tcpdump — temel gerçek ve sudo'ya ihtiyaç duyan şey
Yukarıdaki her şey işletim sisteminin zaten tuttuğu durumu okur. tcpdump farklıdır: Paketleri doğrudan bir arayüzden yakalar, bu nedenle kendi belgeleri gereksinim hakkında doğrudandır - "Bir ağ arayüzünden paketleri okumak özel ayrıcalıklara sahip olmanızı gerektirebilir" - pratikte macOS'ta sudo. Arayüzü seçmek için -i kullanın, adresleri sayısal tutmak için -n kullanın ve DNS trafiğini izole etmek için port 53 gibi bir filtre ifadesi kullanın:
sudo tcpdump -i en0 -n port 53
# example output, trimmed
23:41:10.221331 IP 192.168.1.10.54812 > 192.168.1.1.53: 41213+ A? example.com. (30)
23:41:10.244109 IP 192.168.1.1.53 > 192.168.1.10.54812: 41213 1/0/0 A 93.184.216.34 (46)Dikkat edilmesi gereken model: 53 numaralı bağlantı noktasından gönderilen bir sorgunun hemen ardından geri gelen bir yanıt. Bir terminalde dig çalıştırırken diğerinde tcpdump çalıştırırsanız, sorguyu tam olarak izleyebilir ve kendi komutunuzun ürettiği yanıtı izleyebilirsiniz; bu, man sayfalarının söylediklerine inanmak yerine gerçekten inanmanın iyi bir yoludur.
Ücretsiz bir yedinci araç: Etkinlik Monitörü
Her şeyin bir terminale ihtiyacı olmadığından bu listedeki grafiksel seçeneği adlandırmaya değer. Activity Monitor'ün Ağ sekmesi size toplamları (işlem başına gönderilen ve alınan veriler ve canlı bir verim grafiği) verir; bu, "bir şey bant genişliğini tüketiyor ve ne olduğunu bilmiyorum" için doğru ilk duraktır. Bu aynı zamanda bu makaledeki her aracın paylaştığı tavanın en açık örneğidir: size bir yardımcı sürecin bir gecede iki gigabayt taşıdığını söyleyebilir ve bu iki gigabaytın nereye gittiğine ilişkin bir sütunu yoktur. Hacim ve hedef iki farklı sorudur ve macOS bunları iki farklı araçla yanıtlar.
On dakikayı bir araya getirmek
sudo lsof -i -n -P— açık yuvaların mevcut listesini tek geçişte, otuz saniyede alın.nettop -m route -l 5— lsof'un anlık görüntüsünde kaçırılan her şeyi yakalamak için birkaç canlı örnek alın.scutil --dns— özellikle bir VPN veya halka açık Wi-Fi kullanıyorsanız, gerçekte hangi çözümleyiciyi kullandığınızı onaylayın.dig <name> +short, şu anda neye çözümlendiğini görmek için 1. adımdan itibaren bilmediğiniz herhangi bir konuda.sudo tcpdump -i en0 -n port 53, uygulamalar işlerini yürütürken DNS trafiğini altmış saniye boyunca izlemek için.log stream --predicategrep anahtar sözcüğüyle, yukarıdaki bir şey önceki beşinin yanıtlamadığı bir soruyu gündeme getirdiyse.
Çalışılmış bir örnek
Diyelim ki 1. adım, tanımadığınız bir adrese açık bir bağlantı tutan helperd adlı bir işlemi ortaya çıkarıyor. Orada durma. Geriye doğru arama için dig -x <the address> komutunu çalıştırın; bu her zaman okunabilir bir şeye çözümlemez, ancak çözüldüğünde, ads.example-cdn.net gibi bir ana bilgisayar adı size beş saniye içinde ham IP'nin şimdiye kadar anlatabileceğinden daha fazlasını anlatır. nettop -m tcp -l 3 komutunu çalıştırın ve aynı bağlantının birkaç saniye sonra hala açık olup olmadığını ve baytların gerçekten bu bağlantı üzerinden mi hareket ettiğini yoksa boşta mı durduğunu izleyin. Boştaysa ve sabit bir aralıkta yeniden açılıyorsa, bu, tek seferlik bir transfer yerine periyodik bir check-in şeklidir; sıradan güncelleme denetleyicileri aynı şekilde davrandığı için otomatik olarak endişelenmeye değmez, hatırlamaya değer. Ardından, helperd bağlı olan adresi üreten çözümleyicinin beklediğiniz çözümleyici olduğunu doğrulamak için scutil --dns seçeneğini işaretleyin, özellikle de başka birinin Wi-Fi ağını kullanıyorsanız. Beş komut, bir süreç ve "Bunu tanımıyorum" noktasından "işte bu konuda özellikle bildiklerim ve bilmediklerim" noktasına gittiniz - bu, böyle bir denetimin asıl amacı, iyi veya kötü kararından daha fazlasıdır.
Bu araçların hiçbirinin size söylemeyeceği şey
Altısını da geçtiğinizde hala üç gerçek boşluğunuz var. İlk olarak, bir işlem adının ötesindeki kimlik: Burada hiçbir şey "Mail" adlı ikili dosyanın Apple'ın Postası mı yoksa kendisini yeniden adlandıran bir şey mi olduğunu veya imzalanmış olup olmadığını kontrol etmez; bu, codesign ve spctl ile ayrı bir aramadır. İkincisi, hafıza: Terminal penceresi kapandığında öğrendiğiniz her şey de kapanır; Kendiniz oluşturmadığınız sürece "Mac'imin geçen Salı günü neye bağlandığına" ilişkin bir kayıt yoktur. Üçüncüsü, yargılama: Bu araçların hiçbirinin bir bağlantının beklenip beklenmediğine dair bir fikri yoktur. Daha önce hiç kullanmadığı bir adrese bağlanan bir not alma uygulaması, lsof'de normal senkronizasyon sunucusuna bağlanan bir uygulamayla tamamen aynı görünüyor; bu ikisini birbirinden ayıran şey, kendinizin getirmesi gereken model tanıma veya sizin için bir araç getirmesi gerektiğidir.
FireAI ve HisnLabs burada nereye oturuyor
Everything in this lab is free and built into macOS, and none of it names the process behind a connection or remembers it after the terminal closes — which is the specific, narrow gap FireAI’s per-app rules and connection history are built to close.
FireAI, HisnLabs’in kendi ürünüdür: doğrudan Mac’inizde çalışan, yapay zekâ destekli bir güvenlik duvarı. Uygulamalarınızın kurduğu her bağlantıyı sade bir dille gösterir ve Mac’inizden neyin çıkacağına sizin karar vermenizi sağlar — yapay zekâsı yerel olarak çalışır, yani trafiğiniz asla bize ya da başka birine gönderilmez. HisnLabs güvenlik araştırma ekibi bu kararların isabetli kalmasını sağlayan ekiptir: hangi alan adlarının sıradan telemetri, hangilerinin gerçek bir hizmet olduğunu kataloglar, bir bağlantının ardındaki ülkeyi ve ağı izler ve cihaz üzerindeki modeli (Autopilot özelliği) gerçek trafik örüntüleriyle eğitir — üstelik bunların hiçbiri Mac’inizden dışarı çıkmadan.
Arkasındaki teknik kararları okuyabilir ya da FireAI’yi 17 gün boyunca deneyebilirsiniz: HisnLabs’ten FireAI.
