İçeriğe geç

VirusTotal API ile URL Tarama

VirusTotal, hacker ve güvenlik uzmanlarının sıklıkla kullandığı bir güvenlik platformudur. Bu platform üzerinden şüphelendiğiniz; dosya, URL veya IP gibi çeşitli dış kaynakları kolaylıkla güvenlik taramasından geçirebilirsiniz.  VirusTotal birden fazla güvenlik yazılımından geçirerek; isteğinize yanıt verir ve gönderdiğiniz dış kaynak hakkında sizi bilgilendirir. Oldukça hızlı ve kullanışlı bir yapıya sahip.

VirusTotal hakkında, Ekşi Sözlük’te yazılanları  buradan okuyabilirsiniz.

Dış kaynakları; platform üzerinden tarayabileceğiniz gibi; kendi API’sini kullanarak da taratabilirsiniz. Benim size bahsetmek istediğim; VirusTotal API’yi kullanarak; herhangi bir URL’i taratma işlemi. Çünkü bazı durumlarda; kullanıcı dosyalarını, IP adreslerini veya URL’leri güvenlik taramasından geçirmek gerekebiliyor. Dolayısıyla böyle durumlarda; VirusTotal API’yi kullanmak bir nimet. Çünkü onlarca güvenlik yazılımını kullanarak tarama ve sonuçları listeme işlemi gerçekten bir nimet..!

Öncelikli olarak; VirusTotal API’yi kullanabilmek için; platform üzerinde bir üyelik oluşturmalı ve API Key üretmelisiniz. VirusTotal’e kaydolduktan sonra buradaki bağlantıyı kullarak ücretsiz API Key’inizi alabilirsiniz. VirusTotal ayrıca ücretli bir API yapısına da sahip. Sistemde ücretsiz API; Public, ücretli API ise Private olarak tanımlanıyor. Public API ve Private API arasında belirli farklar var, tabiki. En basit fark; Public API ile saniyede en fazla 4 adet istek yapabiliyorsunuz ve bir gündeki istek sınırınız; 5760.  Private API’de böyle bir durum söz konusu değil. Ayrıca; Private API’de gönderilerinize daha fazla raporla karşılık veriliyor. Public ve Private API hakkında daha detaylı bilgi edinmek için; buradaki bağlantıyı kullanabilirsiniz.

Public API’mizi de aldığımıza göre; şimdi yapacağımız işleme dönelim. Aslında kullanacağımız kodların hepsi hazır, VirusTotal tarafından sağlanıyor. İncelemek isterseniz; hepsi buradaki sayfada..! Ben sadece işin detaylarını ve püf noktalarını anlatmak istiyorum.

Üstteki paragrafta belirttiğim linkteki kodları aldım ve kendime göre düzenledim. Kodlarımın son hali aşağıdaki gibi olacaktır.

$scanURL = 'https://emrecanoztas.com';
const VIRUSTOTAL = array(
    'v_url'   => 'https://www.virustotal.com/vtapi/v2/url/report',
    'api_key' => YOUR_API_KEY
);

$request = array(
    'apikey' => VIRUSTOTAL['api_key'],
    'resource'=> $scanURL
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, VIRUSTOTAL['v_url']);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_USERAGENT, 'gzip, My php curl client');
curl_setopt($curl, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);

$result = curl_exec ($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

($status == 200) ? $info = json_decode($result, true) : $info = null;

Yukarıdaki kodlarımızda; daha önce VirusTotal tarafından sağlanan API Key’i kullanarak, belirlediğimiz URL’i taraması için gönderdik. YOUR_API_KEY olarak belirtilen yere kendi Key’inizi yazmanız gerekiyor. VirusTotal API’den dönen değerler; JSON formatındadır. Dolayısıyla dönen değerleri JSON formatında işlemek gerekiyor. $info değşkeni; VirusTotal’den dönen değeri saklı tutan değişken. Eğer istek başarıyla yapılmışsa; bu değişkende bir JSON formatı olacaktır.

Yazdığımız kodların ekran çıktısı da aşağıdaki gibi olacaktır.

string(4821) "{"scan_id": "c75932210f6e1107659e52d0953203803c893bece070c7874c063115048d12f8-1540473425", "resource": "https://emrecanoztas.com", "url": "https://emrecanoztas.com/", "response_code": 1, "scan_date": "2018-10-25 13:17:05", "permalink": "https://www.virustotal.com/url/c75932210f6e1107659e52d0953203803c893bece070c7874c063115048d12f8/analysis/1540473425/", "verbose_msg": "Scan finished, scan information embedded in this object", "filescan_id": null, "positives": 0, "total": 67, "scans": {"CLEAN MX": {"detected": false, "result": "clean site"}, "DNS8": {"detected": false, "result": "clean site"}, "OpenPhish": {"detected": false, "result": "clean site"}, "VX Vault": {"detected": false, "result": "clean site"}, "ZDB Zeus": {"detected": false, "result": "clean site"}, "ZCloudsec": {"detected": false, "result": "clean site"}, "PhishLabs": {"detected": false, "result": "unrated site"}, "Zerofox": {"detected": false, "result": "clean site"}, "K7AntiVirus": {"detected": false, "result": "clean site"}, "FraudSense": {"detected": false, "result": "clean site"}, "Virusdie External Site Scan": {"detected": false, "result": "clean site"}, "Quttera": {"detected": false, "result": "clean site"}, "AegisLab WebGuard": {"detected": false, "result": "clean site"}, "MalwareDomainList": {"detected": false, "result": "clean site", "detail": "http://www.malwaredomainlist.com/mdl.php?search=emrecanoztas.com"}, "ZeusTracker": {"detected": false, "result": "clean site", "detail": "https://zeustracker.abuse.ch/monitor.php?host=emrecanoztas.com"}, "zvelo": {"detected": false, "result": "clean site"}, "Google Safebrowsing": {"detected": false, "result": "clean site"}, "Kaspersky": {"detected": false, "result": "unrated site"}, "BitDefender": {"detected": false, "result": "clean site"}, "Opera": {"detected": false, "result": "clean site"}, "Certly": {"detected": false, "result": "clean site"}, "G-Data": {"detected": false, "result": "clean site"}, "C-SIRT": {"detected": false, "result": "clean site"}, "CyberCrime": {"detected": false, "result": "clean site"}, "SecureBrain": {"detected": false, "result": "clean site"}, "Malware Domain Blocklist": {"detected": false, "result": "clean site"}, "MalwarePatrol": {"detected": false, "result": "clean site"}, "Webutation": {"detected": false, "result": "clean site"}, "Trustwave": {"detected": false, "result": "clean site"}, "Web Security Guard": {"detected": false, "result": "clean site"}, "CyRadar": {"detected": false, "result": "clean site"}, "desenmascara.me": {"detected": false, "result": "clean site"}, "ADMINUSLabs": {"detected": false, "result": "clean site"}, "Malwarebytes hpHosts": {"detected": false, "result": "clean site"}, "Dr.Web": {"detected": false, "result": "clean site"}, "AlienVault": {"detected": false, "result": "clean site"}, "Emsisoft": {"detected": false, "result": "clean site"}, "Rising": {"detected": false, "result": "clean site"}, "Malc0de Database": {"detected": false, "result": "clean site", "detail": "http://malc0de.com/database/index.php?search=emrecanoztas.com"}, "malwares.com URL checker": {"detected": false, "result": "clean site"}, "Phishtank": {"detected": false, "result": "clean site"}, "Malwared": {"detected": false, "result": "clean site"}, "Avira": {"detected": false, "result": "clean site"}, "NotMining": {"detected": false, "result": "unrated site"}, "StopBadware": {"detected": false, "result": "unrated site"}, "Antiy-AVL": {"detected": false, "result": "clean site"}, "Forcepoint ThreatSeeker": {"detected": false, "result": "clean site"}, "SCUMWARE.org": {"detected": false, "result": "clean site"}, "Comodo Site Inspector": {"detected": false, "result": "clean site"}, "Malekal": {"detected": false, "result": "clean site"}, "ESET": {"detected": false, "result": "clean site"}, "Sophos": {"detected": false, "result": "unrated site"}, "Yandex Safebrowsing": {"detected": false, "result": "clean site", "detail": "http://yandex.com/infected?l10n=en&url=https://emrecanoztas.com/"}, "Spam404": {"detected": false, "result": "clean site"}, "Nucleon": {"detected": false, "result": "clean site"}, "Sucuri SiteCheck": {"detected": false, "result": "clean site"}, "Blueliv": {"detected": false, "result": "clean site"}, "Netcraft": {"detected": false, "result": "unrated site"}, "AutoShun": {"detected": false, "result": "unrated site"}, "ThreatHive": {"detected": false, "result": "clean site"}, "FraudScore": {"detected": false, "result": "clean site"}, "Tencent": {"detected": false, "result": "clean site"}, "URLQuery": {"detected": false, "result": "unrated site"}, "Fortinet": {"detected": false, "result": "clean site"}, "ZeroCERT": {"detected": false, "result": "clean site"}, "Baidu-International": {"detected": false, "result": "clean site"}, "securolytics": {"detected": false, "result": "clean site"}}}"

Yukarıdaki ekran çıktımızı okuduğumuzda; toplamda 67 adet güvenlik platformunda (total alanı) taramasının yapıldığı ve herhangi bir virüs içeriğinin bulunmadığı belirtiliyor (positives alanı). Dolayısıyla bu URL temiz durumda.

Buradaki adrese gittiğinizde; profilinizden, daha önce API veya platform üzerinden yapmış olduğunuz aramaların listelerini görebilirsiniz.

Burada size bir durumdan bahsetmek istiyorum. VirusTotal API ile herhangi bir dosya veya URL’i gönderdiğinizde size her zaman bir sonuç vermez. VirusTotal API kullanımında gönderdiğiniz kaynaklar şayet VirusTotal’in veri tabanında kayıtlı ise sonuç verir. Yoksa; gönderdiğiniz kaynak benim dataset’imde yok şeklinde bir uyarı verir. Aynı durum doğrudan tarayıcı üzerinde VirusTotal platformuna bağlanıp aynı kaynağı gönderdiğinizde yoktur. Peki böyle bir durumda ne yapılması gerekir? İncelenmesini istediğimiz kaynağı önce bildirmemiz ve hemen ardından tekrar tarama isteği yapmalıyız. Bu işlemde aşağıdaki şekilde gerçekleştirilebilir.

$scanURL = 'https://emrecanoztas.com';
const VIRUSTOTAL = array(
    'url'     => 'https://www.virustotal.com/vtapi/v2/url/scan',
    'api_key' => YOUR_API_KEY
);

$request<code> = array(
    'apikey' => VIRUSTOTAL['api_key'], 
    'url'    => $scanURL
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, VIRUSTOTAL['url']);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);

$result = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

($status == 200) ? $info = json_decode($result, true) : exit('Error: ' . $result);

curl_close($curl);

Yukarıdaki kodlarımızdan sonra; tekrar VirusTotal’e istek yapmamız durumunda bize taranmış URL sonucunu verecektir.

Aslında önce; taranmasını istediğimiz URL’i bildirip daha sonra bu URL’in taranmış halini istememiz daha mantıklı bir kullanım olacaktır. Dolayısıyla böyle bir kullanımda kesin bir sonuç elde etmiş olursunuz.

Kısaltılmış URL yapısını, VirusTotal inceleyemez. Dolayısıyla URL’in asıl formunu kullanmalısınız. Daha önceki yazımda; kısaltılmış URL yapısının asıl formuna nasıl dönüştürebileceğinizden bahsetmiştim. Makalemi buradan okuyabilirsiniz.

Saygı ve muhabbetle!

Bu içeriği paylaşmak ister misiniz?

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Buradaki içeriklerin tümü kamu malıdır. Kullanılması ve paylaşılması özgürdür.