ICS Simülatörü Part 1
Otomobil ve diğer araçların ele geçirilmesi, üretici firma, toplum üzerinde ve ulusal çapta çarpıcı etkilere sahip olabilir. Düşünün ki rakip ülkeler ülkenizdeki tanklara, askeri ciplere ve diğer araçları komuta etmek için bilgisayar korsanları kullandığı bir siber savaş senaryosu hayal edin. Veya biraz daha sıradan, bilgisayar korsanlarının aracınızı açıp çalıştırabileceği ve kontrol edebileceği bir dünya hayal edin. İşte tam da bunu önlemek adına fiziksel ve yazılımsal ürünler geliştiren kurumların geliştirme süreçlerinde siber güvenlik danışmanlığı almalı ve ürünler kullanılmaya başlandıktan sonra belli periyotlarda kapsamlı pentest yaptırması önemlidir.
Şimdi simüle edilmiş bir aracı analiz etmek ve pentesti kolaylaştırmak için bu bilgilerin bir kısmını kullanabileceğiniz bir simülasyon ortamı kuracağız.
İlk adım, gerekli bağımlılıkları Kali sisteminize kurmaktır.
kali> apt-get install libsdl2-dev libsdl2-image-dev -y
Sıradaki adım The Car Hackers Handbook’un yazarı ve opengarages.org’un kurucusu Craig Smith, daha sonra indirip kuracağımız küçük bir CAN simülatörü geliştirdi.
Buradan github.com’dan klonlamamız ve kurmamız gerekecektir.
kali> git clone https://github.com/zombieCraig/ICSim kali> cd ICsim
O dizinde uzun bir listeleme yaptığımızda çok sayıda dosya görebiliriz. Bu noktada setup_vcan.sh betiğini çalıştırmamız gerekiyor.
Sanal kutu için arayüz kurmak için aşağıdaki komutları çalıştırabilirsiniz.
- sudo modprobe can
- sudo modprobe vcan
- sudo ip link add dev vcan0 type vcan
- sudo ip link set up vcan0
Simüle edilmiş aracımızın gösterge panelini başlatmak için, sanal CAN arayüzünün adının ardından icsim’i çalıştırmamız yeterlidir, benim durumum da vcan0 sizde farklı olabilir.
kali> ./icsim vcan0
Gösterge paneli aşağıdaki gibi masaüstünüzde görünmelidir. Sürücü için açık ve kapalı kapıları gösteren modern araçlara benzer bir hız göstergesi, dönüş sinyali ve sanal bir araç silueti içerir.
Bu aracın kumandasını çalıştırmak için şunu girin;
kali> ./controls vcan0
ICS Simülatörü Part 2
ICS simülatörü gösterge paneli ve kontrollerini kurduk. CAN trafiğini görüntülemek ve analiz etmek için can-utils veya SOCKET CAN kullanacağız.
Bu test adımında odaklanacağımız konular aşağıdaki gibidir;
- cansniffer
- candump
- canplayer
- cansend
cansniffer kullanarak CAN trafiğini sniff ederek başlayacağız. Bu yardımcı program ile arayüzü (bizim durumumuzda vcan0) belirlemelisiniz ve renklendirilmiş çıktıyı görmek istiyorsanız -c seçeneğini kullanmalısınız.
Tüm trafiğin terminalimizi geçmesini izlemek yerine, trafiği daha yaygın olarak kullanılan sniffer Wireshark’a benzer şekilde filtreleyebiliriz.
Daha sonra sadece ID=161’den gelen trafiği görmek istersek;
kali> cansniffer -c vcan0
Sniffer başladıktan sonra girebiliriz;
-000000 +161
Yukarıdaki komutları girdiğinizde ekranda görünmeyecektir. Kimlik numarasını girdikten sonra, dinleyici, ID= 161 olanlar hariç tüm trafiği filtrelemeye başlayacaktır.
can-utils’deki candump yardımcı programı, CAN trafiğini yakalayabilir ve daha sonra analiz veya yeniden oynatma için bir dosyada saklayabilir.
Bunu yapmak için, sadece log için -l seçeneğini ve çıktıyı renklendirmek için -c seçeneğini kullanmamız gerekebilir. Çıktıyı günlüğe kaydetmek ve görüntülemek istiyorsak, -s 0 seçeneğini kullanabiliriz (sessiz mod 0). Ek olarak, hex’ten ASCII’ye (insan tarafından okunabilir) dönüştürülmek üzere çıktı almak istiyorsak, -a (ASCII) seçeneğini ekleyebiliriz. Bu, ASCII çıktısı ile renklendirme modunda candump’u başlatır, verileri bir günlük dosyasında saklar ve aynı anda terminale (stdout) gönderir.
kali> candump -c -l -s 0 -a vcan0
ICS Simülatörü Part 3 CAN Sinyallerinde Tersine Mühendislik
Aslında şu ana kadar anlattıklarımız bu adım için ön hazırlıktı diyebiliriz. CAN paketlerini yakalamak ve göndermek için CAN yardımcı programlarının veya can-utils’in nasıl kullanılacağını öğrendik. Şimdi, bu araçlarla aracın kontrolünü ele geçirmek için CAN paketlerini izole etmeye ve tersine mühendislik yapmaya başlayabiliriz.
Arabayı Hızlandırmak İçin Kumandayı Kullanın
Şimdi, gösterge paneli (aşağıdaki gibi) ve kontrolör açıkken kapıları açıp kapatmak, dönüş sinyallerini açmak ve aracı hızlandırmak için ağ üzerinde paketler göndermeye başlayabiliriz.
Senaryomuzda arabayı 100 mph’ye hızlandıran CAN paket sinyalini bulmamız gerekiyor. Bu paketi bulduğumuzda onu çoğaltabiliriz (tersine mühendislik) ve sürücü hiçbir şey yapmadan arabanın 100mph’ye hızlanmasını sağlamak için ağa paketleri gönderebiliriz.
Belirli Paketi ve Değerleri Bulmak İçin cansniffer’ı Kullanın
kali> cansniffer -c vcan0
Şimdi, cansniffer çalışırken, bir kez daha YUKARI okuna basın ve arabayı 100mph’ye hızlandırın. Veri geçişini izleyin ve hızla değişen paketleri gözlemleyin (kırmızı renkte olacaktır). Bu paketler muhtemelen aracın hızını değiştirenler olacaktır.
Aşağıda görebileceğiniz gibi aracı hızlandırma için olası değer ve kimlik ID’si 244 olan paketi belirledik. O kimliğe odaklanalım.
Daha önce anlattığımız gibi, bu kimlik dışındaki tüm trafiği filtreleyebiliriz. Maskeyi kullanarak ve ardından odaklanmak istediğimiz kimliği girerek cansniffer yalnızca odaklanmak istediğimiz trafiği görüntüleyecektir. Bu nedenle, yalnızca bu kimliği filtrelemek için şunu girin;
-000000 +244
Bu girişler ekranda görünmeyecektir.
Bunu yaptığınızda, cansniffer aşağıda görüldüğü gibi Arbitration ID 244’e yönelik olanlar hariç tüm trafiği filtreleyecektir.
Şimdi arabayı tekrar 100 mil hızla hızlandırın ve değerlerin değişimini izleyin. Maksimum hıza ulaştığınızda, muhtemelen yukarıdakilere benzer değerler göreceksiniz. Bu değerleri not olarak kaydedin.
Hızlandırma Paketinde Tersine Mühendislik Yapın
Artık cansend yardımcı programını kullanarak bu Arbitration Kimliği ile bu değerlerle ağ üzerinden bir paket gönderebiliriz. Dikkat edin. cansend yardımcı programı arabirimi ardından arbitration kimliğini, “#” sembolü ve ardından aşağıdaki gibi değerleri gerektirir;
kali> cansend vcan0 244 # 0000003812
Bu paket arabaya 100mph’ye hızlanması için sinyal gönderecektir.
Bu doğru paket olmasına rağmen, hız göstergesinde herhangi bir değişiklik fark etmeyebilirsiniz. Bunun nedeni, CAN ağının aynı anda 0mph’de rölantide de sinyaller göndermesidir. Araba karışık sinyaller alıyor. Arabanın normal kontrol sistemi 0 mph’de çalışmasını söylüyor ve siz 100 mph’ye hızlanması için tek bir paket gönderiyorsunuz.
Ya arabaya sadece 1 yerine 100 mil hızlanmasını söyleyen sürekli bir paket akışı gönderebilseydik? Normal kontrol sistemi paketlerini bastırabilir ve arabanın hızlanmasını sağlayabiliriz.
Arabaya hızlanmasını söyleyen sürekli paketler göndermek için basit bir komut dosyası yazmayı deneyelim. Örneğin;
kali> while true; do cansend vcan0 244#0000003812; done
Özet:
can-utils ve ICSim, CAN protokolünün nasıl çalıştığını anlamak ve ağdaki kontrol sinyallerini ve paketlerini tersine mühendislik yapmak için mükemmel pentest araçlarıdır. GPS, hücresel ve kablosuz ağlar gibi araca erişim sağlamak için birçok vektör olmasına rağmen, aracın ağına girdikten sonra hangi sinyallerin hangi işlevleri kontrol ettiğini belirlememiz gerekir.
Sonuç:
Her geliştirilen fiziki veya yazılımsal ürünün daha geliştiriliyorken bile siber güvenlik mimarilerinin ve siber güvenlik katmanlarının, birden fazla siber güvenlik mühendisi ile inşa edilmelidir. Aynı zamanda birden fazla Pentester’la farklı bakış açısı getirilebilecek testlerinin kapsamlarının geniş tutulması koşuluyla yaptırılması gerektiğini düşünmekteyiz.
Bu içerik dizisinin diğer bölümlerine aşağıdaki linklerden ulaşabilirsiniz:
- Yeni Nesil Otomobil Güvenlik Testleri Nasıl Yapılmalı? [1]
- Yeni Nesil Otomobil Güvenlik Testleri Nasıl Yapılmalı? [2]
- Yeni Nesil Otomobil Güvenlik Testleri Nasıl Yapılmalı? [3]
Sorumluluk Reddi Beyanı
Değerli ziyaretçimiz,
Bu blog yazımız bilgi amaçlı olup, saldırılara karşı farkındalığı arttırabilmek ve bu doğrultuda tedbirler alınabilmesi amacı ile hazırlanmıştır. Bu yazıda geçen bilgilerin amacı dışında kullanılmasının hukuki olmadığını hatırlatırız. Anlatılanlardan kaynaklanabilecek doğrudan ya da dolaylı zarar ve kayıplardan CyberArts firmasının sorumlu tutulamayacağını beyan ederiz.
Siber Güvenlik, Dijital Dönüşüm, MSSP, Sızma Testi, KVKK, GDPR, ISO 27001, ISO 27701 ve DDO Bilgi ve İletişim Güvenliği Rehberi başlıklarıyla ilgili teklif almak için lütfen tıklayın.