Kötü Amaçlı Yazılımları Anlama

The source-page: http://xfront.com/malware/index.html

Roger L. Costello

Geçenlerde kötü amaçlı yazılımlar hakkında bilgi edinmek için yola çıktım. Düşüncelerimi düzenlemek için ilgili kavramların bir modelini oluşturdum. Kötü amaçlı yazılım, yazılım programlarını içerir, bu yüzden programları modellemem gerekiyordu – girdileri ve çıktıları. Kötü amaçlı yazılımın zarar verme amacı içerdiğini öğrendim, bu nedenle (kötü amaçlı veya zararsız) programlar oluşturan insanları modellemem ve zarar kavramını modellemem gerekiyordu. Kötü amaçlı yazılımın yaygın olarak kabul edilen bir tanımı olmadığını öğrendim. Bazı kişiler kötü amaçlı yazılımı kötü niyetli olarak oluşturulmuş yazılımlar olarak tanımlar; diğerleri bunu zarar veren yazılım olarak tanımlar. Kötü amaçlı yazılımın kötü niyetle oluşturulmuş bir yazılım olduğu ve yürütüldüğünde sonuçlarının zarar verdiği tanımını benimsedim.

Aşağıda modelimde ifade ettiğim varlık ve ilişkilerin ifadeleri bulunmaktadır. Yazılım yerine kelime programını kullandığımı lütfen unutmayınProgramlar ile programların girdileri arasında ayrım yaparım. Girdiler yazılım, kod, metin veya ikili olabilir. Programlar girdileri işler (yürütme/yorumlama). Amaç, hangi girdilerin kötü amaçlı yazılım olduğunu belirlemektir.

  • Programlar insanlar tarafından oluşturulur.
  • Programlara girdiler insanlar tarafından oluşturulur.
  • Bir programın her girdisi bir çıktı üretir.
  • Aynı girdi verildiğinde, bir program her zaman aynı çıktıyı üretir.
  • Belirli bir girdi setini işlemek ve belirli bir çıktı seti üretmek için bir program oluşturulur. Bir programdaki gerçek girdi seti ve bir program tarafından üretilen çıktılar daha büyük olabilir. Yani, beklenen G/Ç, gerçek G/Ç’nin bir alt kümesidir.
  • Bir kişi bir programa girdi oluşturduğunda, ya iyi niyetli ya da kötü niyetlidir.
  • Bazı çıktılar zarar verir.
  • Bir programın işlemek için oluşturduğu girdiler iyi huyludur. Bir programın üretmek için oluşturduğu çıktılar zarar vermez.
  • Yukarıdaki ifadeler karşılanırsa, aşağıdaki sonuçlar mantıksal olarak takip edilir:
    • Bir programın işlemek için oluşturulduğu girdiler kötü amaçlı yazılım değildir; yalnızca bir programın işlemek için oluşturulmadığı girdiler kötü amaçlı yazılım olabilir.
    • İyi niyetle yazılmış yazılımlar kötü amaçlı yazılım olabilir. Bir program tarafından yürütüldüğünde zarar veren çıktılara neden olan iyi huylu girdiler olabilir.

——————————

Modelleme, alakasız yönleri soyutlamayı ve ilgili bazı yönleri basitleştirmeyi içerir. Yukarıdaki ifadeleri bir arkadaşıma gösterdim ve o benim modelimin atladığı ve basitleştirdiği şeyleri tespit etti. Aşağıda arkadaşlarımın yorumları kırmızı renkte.

  1. Programlar insanlar tarafından oluşturulur.Bazı programlar diğer programlar tarafından oluşturulur. Örneğin, Lex’e girdi olarak bir dilbilgisi verilir ve bir ayrıştırıcı (bir programdır) çıktısı verir. Yani, bir program bir program yarattı.
  2. Programlara girdiler insanlar tarafından oluşturulur.Günümüz yazılımlarının çoğu gömülü yazılımlardır. Bu programlar girdilerini sensörlerden ve aktüatörlerden alır. Yani, çoğu girdi insan olmayanlardan.
  3. Bir programın her girdisi bir çıktı üretir.Bir program başarısız olursa, herhangi bir çıktı üretmeyebilir veya yanlış çıktı üretebilir veya doğru çıktıyı yanlış zamanda üretebilir (ki bu aslında yanlış çıktı ile aynı şeydir).
  4. Aynı girdi verildiğinde, bir program her zaman aynı çıktıyı üretir.Bu, gömülü gerçek zamanlı programlarda neredeyse hiçbir zaman doğru değildir. Örneğin, programın girişi, kahve makinesine su akışını kontrol eden bir kahve makinesi valfidir ve çıkış, su seviyesidir. Programa aynı girişi (vanayı) verin ve hemen hemen her zaman çıkış (su seviyesi) farklı olacaktır.
  5. Belirli bir girdi setini işlemek ve belirli bir çıktı seti üretmek için bir program oluşturulur. Bir programdaki gerçek girdi seti ve bir program tarafından üretilen çıktılar daha büyük olabilir. Yani, beklenen G/Ç, gerçek G/Ç’nin bir alt kümesidir.Bir program girişleri işlemeden önce her zaman kontrol etmelidir. Bu nedenle, işlenen girdi kümesi, programın işlemek için yaratıldığı girdi kümesine eşit olmalıdır.
  6. Bir kişi bir programa girdi oluşturduğunda, ya iyi niyetli ya da kötü niyetlidir.Daha önce de belirtildiği gibi, girdi oluşturan tek varlık insanlar değildir. Sensörlerin ve aktüatörlerin amaçları var mı?
  7. Bazı çıktılar zarar verir.Peki.
  8. Bir programın işlemek için oluşturduğu girdiler iyi huyludur. Bir programın üretmek için oluşturduğu çıktılar zarar vermez.Bir kanadı kontrol eden bir program düşünün. Giriş bir pitot tüpündendir. Pitot tüpünde, uçağın durmasını sağlayan bir çıktı (kanat konfigürasyonu) üreten programa girdi ile sonuçlanan buz olduğunu varsayalım. Girdi, program tarafından beklenen aralıktadır ve iyi niyetlidir (bir pitot tüpünün niyetleri olduğu varsayılırsa), ancak çıktı zarar verir.
  9. Yukarıdaki ifadeler karşılanırsa, aşağıdaki sonuçlar mantıksal olarak takip edilir:
    • Bir programın işlemek için oluşturulduğu girdiler kötü amaçlı yazılım değildir; yalnızca bir programın işlemek için oluşturulmadığı girdiler kötü amaçlı yazılım olabilir.Düzenli.
    • İyi niyetle yazılmış yazılımlar kötü amaçlı yazılım olabilir. Bir program tarafından yürütüldüğünde zarar veren çıktılarla sonuçlanan iyi huylu girdiler olabilir.Evet, zararsız ama yine de zarar veren bazı girdiler var. Kimse radyasyon sisteminin zarar vermesini amaçlamadı, ancak sistemdeki hatalar nedeniyle biri öldü.

——————————

Kötü amaçlı yazılımın kötü niyetle oluşturulan ve çalıştırıldığında zarar veren yazılım olduğu tanımını benimsediğimi hatırlayın. İşte arkadaşımın bu konuda söyledikleri:

Bir programın tasarımında, birinin yararlandığı bir güvenlik açığını ortaya çıkaran bir kusur olduğunu varsayalım; bu program kötü amaçlı yazılım mı? Buggy uygulama kötü amaçlı yazılımı, yalnızca istismar edilebildiği için mi? Birisi hatayı istismar edene kadar 10 yıl gibi bir süre boyunca içinde bir hata olan SSH olduğunu düşünüyorum. SSH programı, hatanın tespit edilmediği 10 yıl boyunca kötü amaçlı yazılım mıydı? Bir programın tasarımında zarar verme potansiyeline sahip bir kusur varsa, örneğin uçağın yazılımında, programın çökmesine neden olabilecek bir kusur varsa. Kötü amaçlı yazılım mı?

Son Güncelleme: 27 Ekim 2020.