{mosimage}Во оваа статија ќе зборуваме за светски познатиот скенер за ранливости – Nessus. Се сомневам дека вие што се занимавате со компјутерска сигурност не сте запознаени со алаткава. Според произведувачот на алатката, компанијата Tenable Network Security, основана во 2002 година во Колумбија, Мериленд (САД), Nessus претставува скенер за ранливости или слабости кој се карактеризира со брзо откривање на сервиси и слабости, ревизии на разни конфигурации, профајлирање на вредност, откривање на сензитивни податоци и анализа на ранливости на вашата сигурносна конструкција. Nessus скенери можат да бидат и дистрибуирани низ целата организација, во внатрешноста на DMZ или пак преку физички одделени мрежи.
Nessus е бесплатна алатка и е достапна за неколку платформи:
– Linux: Fedora 7, 8 и 9, Red Hat Enterprise 3, 4 и 5 (i386 и x86-64), CentOS 3, 4 и 5, SuSE 9.3 и 10, Debian 4(i386, amd64), Ubuntu 7.10 (i386) и 8.04 (i386, amd64)
– FreeBSD: FreeBSD 7 (i386)
– Solaris: Solaris 9 и 10 (sparc)
– Mac OS X: Mac OS X 10.4 и 10.5 (intel и ppc)
– Windows: Windows XP, 2003, Vista и 2008
Се решив да пишувам за инсталација и користење на Nessus врз Linux платформа, поточно…Fedora 10.
Последната верзија за време на ова пишување на Nessus е 3.2.1, а за дистрибуцијата Fedora ќе го преземеме пакетот за Fedora 9 кој исто така работи безпрекорно и во Fedora 10.
На официјалната веб страна за преземање, http://nessus.org/download/, го избираме саканиот пакет, се согласуваме со условите на користењето и потоа можете да го пополнувате формуларот или пак да го прескокнете тој дел и да одите директно на линкот за преземање: http://nessus.org/download/nessus_form_processor.php?directdl=yes. Од дадената листа, го пронаоѓаме пакетот наменет за Fedora 9 и го преземаме (Nessus-3.2.1-fc9.i386.rpm – 11570 KB).
Откако го преземавме пакетот, се враќаме назад на веб страната и го симнуваме GUI клиентот NessusClient-3.2.1.1-fc9.i386.rpm (Fedora 9) (482 KB). Ова е секако ваш избор, дали сакате GUI клиент или CLI, бидејќи во самиот пакет на Nessus го има CLI клиентот но не и GUI…така да, за поголема прегледност и полесен живот, го преземаме GUI клиентот за кој ќе зборуваме подолу.
Во нашата Linux платформа, отвораме терминал, се логираме како root и почнуваме со инсталација на Nessus Vulnerability Scanner…
[root@zeroscience nessus-install]# rpm -ivh Nessus-3.2.1-fc9.i386.rpm
Preparing packages for installation...
Nessus-3.2.1-fc9
nessusd (Nessus) 3.2.1. for Linux
(C) 1998 - 2008 Tenable Network Security, Inc.
Processing the Nessus plugins...
[##################################################]
All plugins loaded
- Please run /opt/nessus//sbin/nessus-adduser to add an admin user
- Register your Nessus scanner at http://www.nessus.org/register/ to obtain all the newest plugins
- You can start nessusd by typing /sbin/service nessusd start
[root@zeroscience nessus-install]#
Како и клиентот:
[root@zeroscience nessus-install]# rpm -iv NessusClient-3.2.1.1-fc9.i386.rpm
Preparing packages for installation...
NessusClient-3.2.1.1-fc9
[root@zeroscience nessus-install]#
Само да напоменам дека Nessus се состои од Nessus Server и Nessus Client. За да работи клиентот, серверот треба да е веќе стартуван. Затоа и горенаведеното објаснување дека Nessus може да се дистрибуира низ цела организација или низ разделени физички мрежи е тоа што можеме од било каде со клиентот да се конектираме до било кој Nessus Server (со даденин привилегии) и да почнеме да скенираме.
Е сега, за да не ја пишуваме целосната патека до скенерот и неговите други функции, ќе ги експортираме патеките кај што се наоѓа Nessus за полесно навигирање и нивно извршување.
[root@zeroscience nessus-install]# export PATH=$PATH:/opt/nessus/bin
[root@zeroscience nessus-install]# export PATH=$PATH:/opt/nessus/sbin
Не заборавајте да ги додадете двете напишани линии во .bashrc на вашето корисничко име за вчитување на секое рестартирање на системот.
[lqwrm@zeroscience ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
export PATH=$PATH:/opt/nessus/bin/
export PATH=$PATH:/opt/nessus/sbin/
[lqwrm@zeroscience ~]$
Потоа следува креирање на симболичен линк на Nessus клиентот за да пристапуваме со командата: nessus, а не со NessusClient.
[root@zeroscience nessus-install] # cd /opt/nessus/bin/
[root@zeroscience bin]# ln -sv /opt/nessus/bin/NessusClient nessus
`nessus' -> `/opt/nessus/bin/NessusClient'
[root@zeroscience bin]#
Следно нешто е креирање на корисничко име и правила (rules set) со кое ќе се конектираме на серверот со помош на клиентот.
[root@zeroscience nessus-install]# nessus-adduser
Using /var/tmp as a temporary file holder
Add a new nessusd user
----------------------
Login : gjoko
Authentication (pass/cert) [pass] : pass
Login password : ********
Login password (again) : ********
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that gjoko has the right to test. For instance, you may want
him to be able to scan his own host only.
Please see the nessus-adduser(8) man page for the rules syntax
Enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rules set)
Притискаме Ctrl+D...
Login
: gjoko
Password
: ***********
DN
:
Rules
:
Is that ok ? (y/n) [y] y
user added.
[root@zeroscience nessus-install]#
Синтакса за креирање на правила или rules set е следна:
accept/deny ip/mask
default accept/deny
Изразот default мора да биде последното правило и ја дефинира полисата на корисникот. На пример, следново правило ќе му овозможи на корисникот да ги тестира адресите 10.0.1.0/24, 10.0.55.0/24 и 90.10.0.0/16 и ништо друго:
accept 10.0.1.0/24
accept 10.0.55.0/24
accept 90.10.0.0/16
default deny
Следново правило ќе му дозволи на корисникот да тестира што ќе посака, освен мрежата 192.168.1.0/24:
deny 192.168.1.0/24
default accept
Мислам дека е јасно како и на кој принцип работи доделувањето на правила за некој корисник. Одиме понатаму…
Nessus алатката работи на принцип на т.н. плагини или некој вид на база на податоци кои ги има во голем број (25500+). И доколку сакаме да бидеме во тек со ново-објавените плагини од страна на производителот, ќе мораме од време на време да правиме update на самите. Тие се складираат во т.н. nessus plugin feed. Постојат два вида на feed-ови и тоа Home Feed (кој е бесплатен) и Professional Feed кој чини 1200 долари. Подетално за feed-овите и нивна разлика можете да погледнете на следниов линк: http://nessus.org/plugins/index.php?view=register-info. Ние се интересираме за Home Feed и за таа цел ќе треба да побараме активациски код за користење на истиот. За да се придобиете со Home Feed одиме до Home Feed и ја оставаме нашата е-маил адреса на која ќе добиеме активациски код и ќе го активираме на следниот начин:
[root@zeroscience nessus-install]# nessus-fetch --register 4D0E-ABB1-73C1-5D64-720D
Your activation code has been registered properly - thank you.
Now fetching the newest plugin set from plugins.nessus.org...
Your Nessus installation is now up-to-date.
If auto_update is set to 'yes' in nessusd.conf, Nessus will update the plugins by itself.
[root@zeroscience nessus-install]#
Потоа за секое надоградување на плагините:
[root@zeroscience nessus-install]# nessus-update-plugins
[root@zeroscience nessus-install]#
Според сликава можете да ги видите малите алатки кои Nessus ги содржи за полесно одржување.
Време е да го стартуваме серверот и клиентот и да почнеме со забавниот дел. Првин го стартуваме серверот кој при стартување ги вчитува сите плагини и тоа ќе потрае неколку минути:
[root@zeroscience bin]# /etc/init.d/nessusd start
Starting Nessus services:
[
OK
]
[root@zeroscience bin]#
Потоа го стартуваме и GUI клиентот и се поврзуваме на серверот со претходно креираното корисничко име:
Од овие примери можеме да го видиме изгледот на GUI клиентот како и креирање на конекција во која се логираме на серверот со даден хост и порт на самиот сервер (zeroscience.org:1241).
Откако ќе воспоставиме врска помеѓу клиентот и серверот, креираме нова полиса за да избереме неколку опции и кои плагини да ги користи таа полиса:
Откако ќе ги избереме саканите опции, ја сочувуваме полисата и продолжуваме со избирање на мета. Во овој случај јас го имам изберено локалниот хост (zeroscience.org) кај што се наоѓа и самиот сервер (nessusd). Можеме да избереме и адреси од некој фајл, како и скенирање на повеќе хостови одеднаш…
Притискаме Save и потоа кликаме на копчето Scan Now за да почнеме со скенирањето…
После завршување на скенирањето, го сочувуваме резултатот од скенирањето во еден од дадените опции (во овој случај – HTML) за потоа полесно и попрегледно да ги анализираме пронајдените слабости или информации.
Резултатите од ова скенирање можете да ги погледнете тука: http://it.com.mk/gjoko/Report_ZS_Lab.html
Како што гледате од дадените информации, немаме сериозни ранливости на дадениот хост. Еве како изгледа некој хост со пронајдени ранливости ;)
http://it.com.mk/gjoko/itcommk_2009.html
Од самите примери можете да заклучите дека се работи за многу моќна алатка која треба да е имплементирана во секоја поголема организација која се грижи за својата сигурност.
Nessus во својот пакет го содржи и својот јазик за пишување на плагини наречен Nessus Attack Scripting Language или NASL. Со помош на овој јазик и вие сте во можност да си напишете свој приватен плагин кој може да ви помогне во понатамошни пен-тестирања или автоматизација. За да видите некои информации за некој даден плагин (плагините се наоѓаат во /opt/nessus/lib/nessus/plugins) пишуваме:
[root@zeroscience plugins]# pwd
/opt/nessus/lib/nessus/plugins
[root@zeroscience plugins]# nasl -V vbulletin_detect.nasl
Script ID : 17282
Script Name : vBulletin Detection
Script Version : $Revision: 1.5 $
Copyright : This script is Copyright (C) 2005-2009 David Maciejak
Family : CGI abuses
[root@zeroscience plugins]#
Или пак сте заинтересирани сами да пишувате плагини, на официјалниот веб сајт можете да најдете документација или туторијал за NASL. Еве како изгледа кодот на плагинот vbulletin_detect.nasl:
#
#
This script was written by David Maciejak
#
This script is released under the GNU GPL v2
#
desc["english"] = "Synopsis :
The remote web server contains a bulletin board system written in PHP.
Description :
The remote host is running vBulletin, a commercial web-based message
forum application written in PHP.
See also :
http://www.vbulletin.com/
Risk factor :
None";
if(description)
{
script_id(17282);
script_version ("$Revision: 1.5 $");
name["english"] = "vBulletin Detection";
script_name(english:name["english"]);
script_description(english:desc["english"]);
summary["english"] = "Checks for the presence of vBulletin";
script_summary(english:summary["english"]);
script_category(ACT_GATHER_INFO);
script_copyright(english:"This script is Copyright (C) 2005-2009 David Maciejak");
family["english"] = "CGI abuses";
script_family(english:family["english"]);
script_dependencie("find_service1.nasl", "http_version.nasl");
script_require_ports("Services/www", 80);
script_exclude_keys("Settings/disable_cgi_scanning");
exit(0);
}
#
# The script code starts here
#
include("global_settings.inc");
include("http_func.inc");
include("http_keepalive.inc");
include("misc_func.inc");
port = get_http_port(default:80);
if (get_kb_item("Services/www/"+port+"/embedded")) exit(0);
if(!can_host_php(port:port)) exit(0);
foreach d (list_uniq(make_list("/forum", cgi_dirs())))
{
req = http_get(item:string(d, "/index.php"), port:port);
res = http_keepalive_send_recv(port:port, data:req);
if( res == NULL ) exit(0);
res = egrep(pattern:" content=.vBulletin ", string:res, icase:TRUE);
if( res )
{
if (d == "") d = "/";
vers = ereg_replace(pattern:".*vBulletin ([0-9.]+).*", string:res, replace:"1", icase:TRUE);
set_kb_item(name:string("www/", port, "/vBulletin"),
value:string(vers," under ",d));
if (report_verbosity)
{
report = string(
desc,
"nn",
"Plugin output :n",
"n",
"The remote host is running vBulletin " + vers + " under " + d
);
security_note(port:port, data:report);
}
else security_note(port);
exit(0);
}
}
И тоа би било тоа. Запомнете дека се зависи од вашата креативност како ќе ја искористите оваа алатка и нејзините функции. Како за крај, го стопираме серверот поради сигурносни причини ;))) a вие можете да го погледнете и демо видеото кое се наоѓа и на официјалниот сајт ТУКА.
[root@zeroscience lqwrm]# /etc/init.d/nessusd stop
Shutting down Nessus services:
[
OK
]
[root@zeroscience lqwrm]#






