From: pnr@innopoli.ajk.tele.fi (Pekka Nikander)
Newsgroups: sfnet.atk
Subject: Miten tallettaa virus lerpulle ja muita kauhukuvia
Date: 11 Apr 92 10:20:13 GMT
Distribution: sfnet
Organization: Telecomm Finland

In article <1992Apr10.144804.16546@nic.funet.fi> tapio@nic.funet.fi (Tapio Keih{nen) writes:
> >...stealth-virusten ollessa kyseessa ne menevat lukutapahtuman valiin
> >ja poistavat itsensa ohjelmista / antavat sellaisen vaikutelman, etta
> >ohjelma on puhdas. Talloin tarkistusohjelman laskuosa nakee vain
> >levyn, jolla ei ole mitaan ylimaaraista koodia. 

In article <1992Apr11.071923.27221@ousrvr.oulu.fi> jhol@stekt1 (Jouko Holopainen ti) writes:
> Mutta kuinka teet niin, ett{ KOKO korppu n{ytt{{ muuttumattomalta?

Helppoa:

  Tapaus 1:  levyll{ on yksikin tyhj{ levylohko

    a) sijoitetaan virus ko. levylohkoon (vaikea aktivoida)
       - kun ko. lohko luetaan, palautetaan tyhj{{ (NULleja)
       - kun ko. lohkolle yritet{{n kirjoittaa, palautetaan
	 kirjoitusvirhe
    b) sijoitetaan virus esim. boot sektorille ja boot sektori
       tyhj{lle levylohkolle
       - sama kuin yll{, paitsi ett{ muutetaan viel| boot
	 sektorin lukua (ja kirjoitusta, jos halutaan)...

  Tapaus 2:  levyll{ ei ole yht{{n tyhj{{ levylohkoa, mutta
	     data kompressoituu

    Sama kuin edell{, mutta kompressoidaan riitt{v{ m{{r{
    dataa niin ett{ saadaan virus mahtumaan.  Luettaessa
    sitten dekompressoidaan lennossa.  Jopa datan kirjoitus
    onnistuu teoriassa, mutta voi olla k{yt{nn|ss{ vaikeaa.

  Tapaus 3:  levyll{ oleva data ei kompressoidu

    T{m{ menee hankalaksi.  En keksi miten virus saataisiin
    t{llaiselle levykkeelle.

Tapauksissa 1 ja 2 siis ei ole mit{{n mahdollisuutta havaita
levykkeell{ olevaa virusta, jos ko. virus on aktiivinen.  T{ss{ siis
ollaan unohdettu tiedostot kokonaan ja toimitaan levylohkojen tasolla
(eli menn{{n jonnekin BIOS:iin)

Digitaalinen allekirjoitus tai CRC tms. ei auta, koska levyke n{ytt{{
koskemattomalta.  Itse koodatut suoraan rautaa k{sittelev{t
lukurutiinit tietysti auttaa, mutta kuten on moneen kertaan todettu,
niiden tekeminen yleisp{teviksi on hankalaa.

Kun nyt ruvettiin maalaamaan piruja seinille niin jatketaan.  MS-DOS
muistitarkistuksia vastaan 286 ja 386 koneissa virukset voivat
piiloutua yl{muistiin ja toimia protected moodissa.  T{llaisia
viruksia eiv{t puhtaat 8086:n ominaisuuksiin perustuvat MS-DOS
ohjelmat pysty *mitenk{{n* havaitsemaan.  Tai kyll{ pystyv{t (ainakin
teoreettisesti): mittaamalla levyoperaatioihin menev{{ aikaa :-)

Jos 386 prosessori olisi v{h{n parempi, voisi 386:lle tehd{ esim. Mach
3.0:n pohjalta tehd{ viruksen, joka itse toimisi 386-moodissa ja
ajaisi MIT[ TAHANSA k{ytt|j{rjestelm{{ virtuaalikoneessa.  T{llainen
virus ei edes kooltaan olisi kovin suuri (muutamia kiloja), ja sit{
olisi t{ysin mahdoton havaita mill{{n muulla kuin ajoituksen
tarkistuksilla.  Onneksi (?) 386-prosessorissa on suunnitteluvirheit{,
joiden vuoksi sen avulla ei voi toteuttaa 386-virtuaalikonetta.  (Tai
siis voi toteuttamalla 386-virtuaalikone puhtaasti softalla.  Raudan
avulla ei onnistu, koska lippujen tunkeminen pinoon on sallittu
user-tilassa, ja liput taas sis{lt{v{t tiedon siit{ miss{ tilassa
ollaan.)

T{llaista virtuaalikone-virusta ei pystyisi kiert{m{{n edes
koodaamalla omat rautaan suoraan menev{t lukurutiinit, koska
virtuaalikonevirus ajaa kaikki ohjelmat user-moodissa ja huolehtii
joka tapauksessa viime k{dess{ itse kaikista rautaoperaatioista....

IBM 370, Sparc, MC680X0 (X >= 2) yms. prosessoreissa
virtuaalikoneviruksen pystynee tekem{{n.  Siit{ vaan kaikki duuniin
:-) Unix ja suurkonepuolella ei viel{ olekaan juuri viruksia
liikkunut.  Ai niin.  Mach 3.0:n kehitt{miseen lienee mennyt kymmeni{
miesty|vuosia.  Mutta virusten kehitt{jill{h{n on aikaa :-)  Ja he
ovat niin {lykk{it{ ja fiksuja ja filmaattisiakin :-)

Niin joo.  Samantien kun tekee tuollaisen virutaalikoneviruksen, sen
voisi varustaa rutiineilla joiden avulla se seuraa
l{hiverkkoliikennett{, poimii sielt{ k{ytt{jien salasanoja ja
tunkeutuu muihin j{rjestelmiin madon lailla.....




--
Pekka Nikander                           S{hk|posti: pnr@ajk.tele.fi -tai-
					             Pekka.Nikander@ajk.tele.fi