Ansible kullanarak VirusTotal’den URL taraması yapacağız.
Bunu yapmadan önce https://www.virustotal.com/ adresinden hesap oluşturup API key elde edelim. Daha önceki yazılarımızda Ansible ile nasıl POST ve GET istekleri yaptığımız yazılar yardımıyla Ansible için POST ve GET isteklerinin yapacağımız scripttimizi yazacağız.
ilk olarak, https://www.virustotal.com/api/v3/urls adresine POST isteği atıp URL taramasını başlatacağız.
- name: VirusTotal URL SCAN
hosts: localhost
vars_prompt:
- name: URL
prompt: "Lutfen URL adresini giriniz:"
private: no
tasks:
- name: URL SCAN
uri:
url: "https://www.virustotal.com/api/v3/urls"
method: POST
headers:
accept: "application/json"
content-type: "application/x-www-form-urlencoded"
x-apikey: "[API_KEY]"
body: "url={{URL}}"
body_format: form-urlencoded
register: response
- debug:
var: response
Yukarıdaki scriptte x-apikey attribute kısmına elde ettiğimiz API key yazmalıyız. Script’ti çalıştırdıktan sonra taranacak URL bilgisi isteyecektir.
# ansible-playbook [YAML FILE NAME]
komutu ile scriptti başlatalım.

Başarılı bir şekilde URL bilgisini gönderip tarama işlemini tamamladık. Response bilgisinde yapılan isteğin bilgileri ve result bilgisi vermektedir.
"json": {
"data": {
"id": "u-7ebef3b98f8d2765d86fbfe1c9d71ea5a96ac2d8b7e018a2a74d21282929184a-1728843884",
"links": {
"self": "https://www.virustotal.com/api/v3/analyses/u-7ebef3b98f8d2765d86fbfe1c9d71ea5a96ac2d8b7e018a2a74d21282929184a-1728843884"
},
"type": "analysis"
}
},
URL taraması sonrasında response bilgisindeki “id” kullanarak analiz sonucunu elde edelim.
Analiz sonucu için, https://www.virustotal.com/api/v3/analyses/{id} endpointine GET isteği atmamız yeterli olacaktır.
- name: URL Analyse
hosts: localhost
tasks:
- name: GET analysis
uri:
url: "https://www.virustotal.com/api/v3/analyses/{{ response.json.data.id }}"
method: GET
headers:
accept: "application/json"
x-apikey: "[API_KEY]"
register: getresponse
- name: Analysis result
set_fact:
analyse: "{{ getresponse.json.data.attributes.results }}"
- debug:
var: analyse
Yukarıdaki script ile analiz sonucu elde edebiliriz.
İstek sonrasında analiz sonucu elde ediyoruz. Geriye dönen json bilgisine url’in durumunu kategorilere ve engine isimlerine göre durumunu görmekteyiz. Şimdi scriptleri birleştirip otomatik durumu getirelim ve sonucu birazcık filtreleyelim.

- name: VirusTotal URL SCAN
hosts: localhost
vars_prompt:
- name: URL
prompt: "Lutfen URL adresini giriniz:"
private: no
tasks:
- name: URL SCAN
uri:
url: "https://www.virustotal.com/api/v3/urls"
method: POST
headers:
accept: "application/json"
content-type: "application/x-www-form-urlencoded"
x-apikey: "[API_KEY]"
body: "url={{URL}}"
body_format: form-urlencoded
register: response
- debug:
var: response
- name: URL Analyse
hosts: localhost
tasks:
- name: GET analysis
uri:
url: "https://www.virustotal.com/api/v3/analyses/{{ response.json.data.id }}"
method: GET
headers:
accept: "application/json"
x-apikey: "[API_KEY]"
register: getresponse
- name: Analysis result
set_fact:
analyse: "{{ getresponse.json.data.attributes.results }}"
- debug:
var: analyse
Ansible scripttini sadece engine bilgilerini verecek şekilde düzenleyip, birleştirdik.

Faydalı Olması Dileğiyle.