http___publish.boateknoloji.com_2013_01_29_hikit-zararlisi-analizi__1.xml
1.1 2.1 2.2 3.1 3.2 4.1 4.2 5.1 6.1 6.2 7.1 7.2 8.1 9.1 9.2 9.3 9.4 10.1 11.1 11.2 11.3 12.1 13.1 14.1 15.1 15.2 16.1 16.2 16.3 17.1 17.2 17.3 18.1 19.1 19.2 19.3 20.1 20.2 20.3 20.4 21.1 21.2 21.3 22.1 22.2 23.1 24.1 24.2 25.1 25.2 26.1 26.2 27.1 27.2 27.3 28.1 28.2 29.1 29.2 29.3 30.1 30.2 30.3 31.1 31.2 32.1 32.2 32.3 33.1 33.2 34.1 34.2 35.1 35.2 35.3 36.1 37.1 37.2 37.3 37.4 37.5 38.1 38.2 38.3 39.1 39.2 40.1 41.1 42.1 43.1
Introduction: The HIKIT Rookit Analysis Malwares (virus, worm, rootkit, etc.) are among the most important elements, included in complicated attacks. “Malwares" are among the most irrevocable tools, used by the attacker, during attacks, especially called APT (Advanced Persistent Threat), in which many different vectors are used. Mostly, organized crime rings get the people, having advanced knowledge on this issue, write Malwares. Malwares, written as target-driven, must overcome several security mechanisms to reach a specific purpose. This case means techniques and structures, used in Malwares, are complicated. Accordingly; malicious code analysis, besides being a difficult and onerous work, it requires advanced technical knowledge. APT and Target Discovered by Mandiant, HIKIT is a sort of Malware that enables seizing the control of remote system. HIKIT is an intelligence gathering purposed software, an advanced Malware, that carries out its functionality on kernel level completely. The interesting point is that “intelligence” purpose of this Malware completely gathers data, belonging to the contracted / contractor companies of United States of America -- Department of Defense. It carries out activities aimed at gathering several data about organizations, in which some companies that are also available in SBIR/STTR list. Technical Analysis We only have an object named “oci.dll” to perform technical analysis on HIKIT. We confirmed that the file named “oci.dll” was not subjected to any compression process. We observe that there are files with different names in the current executable file when we proceed via this object. Initially; an interesting "string" data, available in the Malware, draws our attention. h:\\JmVodServer\\hikit\\bin32\\RServer.pdb The abovementioned data is the file that contains “debug” symbols, belonging to the Malware, that are available in the computer of the individual that developed the Malware. We can observe that name given to the Malware by the developer is “RServer” and its location in the developer’s computer. After getting this information, phases related with development process of the Malware are as follows: - As the first phase, the Malware installs the file named “oci.dll” via a “dropper”. - DLL installs the signed (driver) module into the system at kernel level. - The module, installed at kernel level, waits for a command from the attacker. How the aforementioned phases realized are displayed in the figure. The Malware, transmitted to users through various ways, waits for communicating with the attacker that connects behind "proxy". After all these processes, we can start carrying out analysis process with the data we obtain. First of all; we need the most basic information on the executable file. We can start analyzing the Malware, beginning from the most basic steps, to carry out all these issues. As seen in the picture above, "oci.dll" file contains a file named "w2fw.sys". Thus; we can observe more clearly that the Malware contains a rootkit. Rootkit softwares operate at the kernel level and analysis process is harder when compared to the other (use-mode) Malwares. Code Signing Mechanism Before mentioning about the following activities, the issue that must be known is code signing logic. Microsoft uses a technique called code signing to determine if modules to be executed at kernel level are safe. This means is to state that the module, installed in the kernel, is a safe module and it's approved. The interesting case that we encountered during analysis process is that *.inf extended files are signed due to GlobalSign certificates. GlobalSign became a current issue with a claim of "hacking" in 2011. It stopped its services for a while due to a doubt of certificates being stolen from its servers. The claims that suggested “GlobalSign was hacked” appeared in early September 2011 and when an analysis is carried out on "timestamp" information of the current file, October is pointed as the last date of edition. We already stated that this Malware, analyzed in rootkit class, is executed in kernel level. As known, inf extended files contain the information on how to setup driver softwares. Now that we have the information that GlobalSign certificates are implemented on the malicious, we can observe that the Malware added itself to the system as signed to execute operations at kernel level. The Malware contains a function, as seen above, to perform various registrations and modifications in Register book. As soon as this function is completed, other routines that belong to the infection processes start to be operated. Malware & Attacker Communication Other than this information, we obtain more interesting data when we open the malicious to analyze. For example; the Malware can make contact with the attacker for commands when the infection processes are completed. “Disassembly” output, that can be seen above, belongs to the routine that is operated for the attacker to connect to the target system. We can see that several processes are operated for connection to be completed If there is a key word within packets when the connection is established, connection process of the attacker is completed. More technically, the Malware installs itself to NDIS-Level to monitor the incoming packets and adds to the system as "cyber network adaptor". Thus; by listening the packets, received by the whole network, it searches for a specific pattern between the among packets. During this connection process, the attacker connects with the target via ports numbered 80 and 443. Within the rules of Firewall, 80 (HTTP) and 443 (HTTPS) ports are among the permitted ports. This case means that the malicious has an access to the target by means of by-passing firewall software or devices. The interesting point in this phase is that the Malware does not contact with any (command and control) server or the attacker's computer. Instead, HIKIT contacts with the attacker by monitoring the whole net on the machine that it infected, in case of any incoming key word. We can acquire a visual result on which values the aforementioned routines gain and where they go. It's clearly seen in the following figure that which function goes to what result. Accordingly; the information about which routines are effective in making contact is available in this diagram. The Malware permits several commands to be operated for remote access, when the contact is made. This definition is solely for the commands, operated by the malicious, and the commands to be operated by the attacker on the target are the commands that operating system defines. "Shell" command that we encountered among the commands to be operated after the contact is made, while proceeding within the machine code, enables creating a command line via remote machine. This means that all the commands, which can be operated by a common or authorized user on operating system, can give command to the backdoor, installed by the attacker to be operated. In short; it can operate a command for his purpose on the system by opening a "command prompt" for the attacker. As soon as the “file” command, that can be seen below, is executed, it is in contact with the driver. Thus, the attacker can carry out the operations of file reading, changing file permissions, creating index and index listing. As a result; the attacker can succeed an access to system with full-authority, when the malicious completes infection processes. The aforementioned “disassembly” is related with the implementation of the operations that were mentioned previously. Another feature of the malicious is the attacker’s ability of making contact via SOXKS5, a proxy. This feature, that attracted our attention while analyzing the malicious, is function which is embedded into the malicious by the attacker to make contact via proxy. As a result; it becomes harder to track the attacker as the contact is more uncertain. "Strings” that belong to the below program are available. Some data, acquired in the beginning of the article, are available here. You can reach all "string" values, contained in the program, through analysis report. Result That this software, published and determined by Mandiant, is a part of APT attack is almost definite. It was stated that its aim was to gather intelligence and information about companies, contracted with U.S.A. Department of Defense. HIKIT was programmed to remain permanent in the system in which it is infected and turn systems into the attacker's slaves during this period. Similar examples of APT attacks are increasing today. As mentioned before, it is quite difficult to determine a malicious on NDIS Driver level and APT attack that it serves. The aforementioned technique that enables the attacker to make contact with the system via a specific pattern is quite old and hard to determine. Determining this sort of an attack is only possible with "network traffic analysis” in some cases. As observed during the analysis; softwares and devices such as Firewall and Anti-virus are inefficient against these kinds of attacks. The organizations that suffer from such attacks and companies that develop security products are completely aware of the situation. Besides classic security products such as; Firewall, anti-virus, the establishments must pay attention for different solutions to determine APT attacks. Attachment : The HIKIT Rootkit Analysis (Part1) Yasin SÜRER Threat Researcher yasin.surer@boateknoloji.com
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1
Giriş: Zararlı Kod Analizi Zararlı Yazılımlar (virus, worm, rootkit vb.) komplike saldırılarda yer alan en önemli unsurlardan biridir. Özellikle APT (Advanced Persistent Threat) adı verilen ve bir çok farklı vektörün kullanıldığı saldırılarda “Zararlı Yazılımlar” saldırgan tarafından kullanılan vazgeçilmez araçlardandır. Zararlı Yazılımlar, çoğunlukla organize suç şebekeleri tarafından konu hakkında ileri seviye bilgisi olan kişilere hazırlatılmaktadır. Hedefe yönelik hazırlanan zararlı yazılımlar, belli bir amaca ulaşabilmek için çeşitli güvenlik mekanizmalarını atlatabilmelidir. Bu durum, zararlı yazılımların içerisinde kullandıkları teknik ve yapıların karmaşık olduğu anlamına gelmektedir. Bu neden zararlı kod analizi zor ve meşakatli bir iş olmakla birlikte, ileri seviye teknik bilgi gerektirmektedir. APT ve Hedef HIKIT, Mandiant tarafından keşfedilen ve uzaktan sistemin kontrolünü ele geçirmeye yarayan bir tür zararlı yazılımdır. HIKIT, gelişmiş bir zararlı yazılım olan ve işlevselliğini tamamen çekirdek seviyesinde gerçekleştiren istihbarat toplama amaçlı bir yazılımdır. Burada ilginç olan bu zararlı yazılımın “istihbarat” amacının tamamen Amerika Birleşik Devletleri Savunma Bakanlığının anlaşmalı/müteahhit firmalarına ait verilerin toplanmasıdır. Aralarında SBIR/STTR listesinde yer alan bazı firmalarında bulunduğu organizasyonlar hakkında çeşitli verilerin toplanmasına yönelik faaliyetler yürütmektedir. Teknik Analiz HIKIT üzerinde teknik analiz yapmak için elimizde sadece “oci.dll” isimli tek bir obje var. “oci.dll” isimli dosyanın herhangi bir sıkıştırılma sürecinden geçmediğini teyit ettik. Bu obje üzerinden gittiğimizde karşımıza mevcut çalıştırılabilir dosya içerisinde farklı isimlerde dosya olduğunu görüyoruz. Öncesinde zararlı yazılımın içerisinde bulunan ilginç bir "string" veri dikkatimizi çekiyor. h:\\JmVodServer\\hikit\\bin32\\RServer.pdb Yukarıdaki veri, zararlı yazılımı geliştiren kişinin bilgisayarında bulunan ve zararlı yazılıma ait "debug" sembolleri içeren dosyadır. Zararlı yazılıma geliştirici tarafından verilen isimin "RServer" olduğunu ve geliştiricinin bilgisayarındaki lokasyonu görebiliyoruz. Bu bilgiden sonra zararlı yazılımın geliştirilme sürecine ait adımlar aşağıdaki gibidir. - Zararlı yazılım ilk adım olarak bir “dropper” sayesinde “oci.dll” isimli dosyayı yükler. - DLL imzalanmış (driver) modülü sisteme çekirdek (kernel-level) seviyesinde yükler. - Çekirdek (kernel-level) seviyesinden yüklenen modül saldırgandan komut bekler. Yukarıdaki adımların nasıl gerçekleştiği şekilde görüntülenmiştir. Kullanıcılara çeşitli yollarla bulaşan zararlı yazılım “proxy” arkasından bağlanan saldırgan ile haberleşmeyi beklemektedir. Tüm bu süreçlerin ardından elimizde bulunan veriler ile analiz işlemine başlayabiliriz. Herşeyden önce çalıştırılabilir dosya hakkında en temel bilgilere ihtiyacımız var. Tüm bunları gerçekleştirmek için zararlı yazılımı, en temel adımlardan başlayarak analiz etmeye başlayabiliriz. Yukarıdaki resimde görüldüğü gibi “oci.dll” dosyası “w2fw.sys” isimli bir dosya barındırıyor. Böylece zararlı yazılımın bir rootkit içerdiğini daha net olarak görebiliyoruz. Rootkit yazılımları çekirdek seviyesinde çalışmaktadır analiz süreci diğer (use-mode) zararlı yazılımlara kıyasla daha zordur. Kod İmzalama Mekanizması Aşağıdaki aktivitelerden bahsetmeden önce bilinmesi gereken konu kod imzalama (code signing) mantığıdır. Microsoft, çekirdek (kernel level) seviyesinde çalıştırılacak modüllerin güvenilir olduğunu belirlemek için kod imzalama denen tekniği kullanır. Bunun anlamı çekirdeğe yüklenen modülün güvenilir bir modül olduğunu ve onaylandığını bildirmektir. Analiz süreincde rastladığımız ilginç olay, *.inf uzantılı dosyaların, GlobalSign sertifikaları sayesinde imzalanmış olmasıdır. GlobalSing 2011 yılında bir “hack” iddiası ile gündeme gelmiştir. Sunucularından sertifikarların çalındığı şüphesi ile hizmetlerini bir süreliğine durdurmuştur. GlobalSign hakkında “hack edildi” iddiaları 2011 Eylül ayı başlarında çıkmıştır, mevcut dosyanın “timestamp” bilgileri incelendiğinde dosyanın son derlenme tarihi olarak Ekim ayı işaret ediliyor. Rootkit sınıfında incelenen bu zararlı yazılımın kernel seviyesinde işlem gördüğünü belirtmiştik. Bilindiği gibi inf uzantılı dosyalar, driver yazılımlarının nasıl kurulacağı bilgisini içermektedir. GlobalSign sertifikalarının zararlıya implement edildiği bilgisi elimizde olduğuna göre, zararlı yazılımın kernel-level işlem yürütebilmek için kendisini imzalı olarak sisteme eklediğini görebiliyoruz. Zararlı yazılım Register defteri içerisinde çeşitli kayıtlar veya modifikasyonlar yapabilmek adına yukarıda görüldüğü gibi bir fonksiyon barındırmaktadır. Bu işlev tamamlandığında enfeksiyon süreçlerine ait diğer rutinler işletilmeye başlamaktadır. Zararlı – Saldırgan Komünikasyonu Zararlıyı incelemek için açtığımızda bu bilginin yanı sıra daha ilginç veriler elde etmiş oluyoruz. Örneğin, zararlı yazılım, enfeksiyon süreçlerini tamamladığında dışarıdan gelecek komutlar için saldırgan ile bir bağlantı kurabiliyor. Yukarıda görülen “disassembly” çıktısı saldırganın hedef sisteme bağlanması için işletilen rutine aittir. Bağlantının tamamlanabilmesi için bir takım süreçlerin işletildiğini görüyoruz. Eğer bağlantı kurulduğunda gelen paketler içerisinde belli bir anahtar kelime varsa saldırganın bağlanması süreci tamamlanıyor. Daha teknik olarak zararlı yazılım, gelen packetleri monitör edebilmek için kendisini NDIS-Level yüklemekte ve bir “sanal network adaptor” olarak sisteme eklemektedir. Böylece tüm network’e gelen paketleri dinleyerek gelen paketler arasında belli bir “pattern” arar. Bu bağlanma süreci esnasında saldırgan 80 ve 443 numaralı portlar üzerinden hedef ile bağlantı kuruyor. Firewall kuralları içerisinde 80 (HTTP) ve 443(HTTPS) portları izin verilmiş portlar arasında yer alır. Bu durum, zararlının firewall yazılım veya cihazlarını by-pass ederek hedefe erişim sağlayabilmesi anlamına gelir. Bu aşamada ilginç olan şey zararlı yazılımın herhangi bir (command and control) sunucuya ya da saldırganın makinesine bağlantı kurmuyor olması. Bunun yerine HIKIT bulaştığı makine üzerinde tüm ağı monitor ederek belli bir anahtar kelime gelmesi durumunda saldırgan ile bağlantı kuruyor. Söz konusu rutinlerin hangi değerleri aldığı ve nereye gittiği konusunda görsel bir sonuç elde edebiliriz. Aşağıda görülen şekilde hangi fonksiyonun -- hangi sonuca gittiği daha net olarak görülebilmektedir. Buna göre bağlantının kurulması işleminde hangi rutinlerin etkili olduğu bilgisi bu diyagramda mevcuttur. Zararlı yazılım uzaktan erişim için bağlantı kurduğunda bir kaç komutun işletilmesine izin veriyor. Bu tanım sadece zararlının işlettiği komutlar içindir ve saldırganın hedef üzerinde işleteceği komutlar işletim sisteminin tanımladığı komutlardır. Makine kodu içerisinde ilerleken bağlantı kurulduktan sonra işletilecek komutlar arasında rastladığımız “shell” komutu uzaktaki makine üzerinden bir komut satırı açmaya olanak sağlıyor. Bunun anlamı işletim sistemi üzerinde sıradan veya yetkili bir kullanıcının işletebileceği tüm komutları, saldırgan işletebilmesi için sisteme yüklediği arka kapıya direktif verebilir. Kısacası saldırgan için bir “command prompt” açarak sistem üzerinde amacı doğrultusunda komut çalıştırabilir. Aşağıda görülen ”file” komutu çalıştırıldığı anda driver ile iletişim halindedir. Saldırgan bu sayede dosya okuma, dosya izinlerini değiştirme, dizin oluşturma ve dizin listeleme işlemlerini gerçekleştirebilir. Böylece zararlı, enfeksiyon süreçlerini tamamladığında saldırgan sisteme tam yetki ile erişim sağlamayı başarabilir. Yukarıdaki “disassembly” daha önce bahsedilen işlemlerin yapılmasıyla ilişkilidir. Zararlının bir başka özelliklerden biri ise saldırganın SOCKS5 yani bir proxy üzerinden bağlantı kurabilmesi özelliğidir. Disassembler ile zararlının incelenmesi aşamasında gözümüze çarpan bu özellik, saldırgan proxy üzerinden bağlantı kurabilmek için zararlının içerisine gömdüğü bir fonksiyondur. Böylece iletişimin daha güvenli belirsiz hale gelerek saldırgan hakkında iz sürmek zorlaşmaktadır. Aşağıda programa ait "string" veriler mevcuttur, yazının en başında elde edilen bazı veriler burada bulunmaktadır. Programın içerisinde barındırdığı tüm "string" değerlere aşağıdaki analiz raporundan ulaşabilirsiniz. Sonuç Mandiant tarafından yayınlanan ve tespit edilen bu zararlı yazılımın, APT saldırısının bir parçası olduğu neredeyse kesindir. Amacinin tamamen istihbarat toplamak olduğu ve ABD Savunma Bakanlığı ile anlaşmalı olan firmalar hakkında bilgi toplamak olduğu belirtilmiştir. HIKIT bulaştığı sistemde tamamen kalıcı olmak ve bu sure zarfında sistemleri saldırganın kölesi haline getirmek üzere programlanmıştır. APT saldırılarının benzeri örnekleri günümüzde gittikçe artmaktadır. Daha önce bahsedildiği üzere NDIS Driver seviyesinde bir zararlının ve hizmet ettiği APT saldırısının tespiti oldukça zordur. Yukarıda bahsedilen ve saldırganın belli bir “pattern” doğrultusunda sisteme bağlantı kurabilmesine yarayan teknik oldukça eski olmak ile birlikte tespiti zordur. Bu tip bir saldırının tespitinin yapılabilmesi bazı durumlarda “network trafik analizi” ile mümkündür. Analiz boyunca görüldüğü gibi Firewall, Anti-virüs gibi yazılım veya cihazların bu tip ataklar karşısında yetersiz kamıştır. Bu ataklardan mağdur olan kurumlar ve güvenlik ürünleri geliştiren firmalar durumun farkındadır. Firewall, anti-virüs gibi klasik güvenlik ürünlerinin yanı sıra kurumların APT ataklarının tespitine yönelik daha farklı çözümlere yönelmeye ehemmiyet göstermelidir. Attachment : HIKIT Zararlısı Analizi Yasin SÜRER Bilgi Güvenliği Uzmanı yasin.surer@boateknoloji.com