Archive for 24. nov. 2008

Windows ja paroolid ? Mõttetu ajaraiskamine…

november 24, 2008

Nagu subjekt ütleb, nii ka asjad on. Kuna põhitöö kõrval on olnud turvalisus minu hobiks, siis sai 3 aastat tagasi juba tehtud programmid…

W2K parool mälust

Tuleta meelde (Outlook Expressi paroolid)

Msn paroolid (vanem messangeri formaat)

Need programmid töötavad isegi (kus protected storage veel kasutusel).

Üldiselt point selles, et lumine nädalavahetus andis aega uuesti uurida asju. Ja ikka asjad logisevad.

W2K ning XP ilma SP oli hea lihtne
HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider

õiget dll välja kutsudes, lobises süsteem rõõmsalt kõik paroolid välja. Msn, Outlook, IE autocomplete.

Nüüd pole enam see storage eriti aktuaalne, MS programmid hakkasid ise paroole hoidma enda formaatides. Nagu alati, mitte just efektiivselt.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2

Väidetavalt on seal URL xor võtmeks , miks ma ei imesta:(

Win9x oli täitsa komöödia, kohe winapi EnumCachedPasswords, mis kõikide ressurside paroolid ütles…oh aegu.

Juhul, kui tarkvaral on natukenegi tugevam parool, siis kasutatakse IAT hookingut

Üldiselt põhjused, miks mõtetu windowsis üldse parooli panna, op. süsteem justkui pahalaste jaoks tehtud (et viirusetõrjet ning troojakate vastast tarkvara saaks ikka müüa).

* Üks windowsi programm saab teisele saata suvalisi messageid.
– lahendus panna vähemalt juurde akna/kiu ID, kes sõnumi saatis, et app saaks teada, kas võtame vastu teate või mitte. Trooja programmid rõõmsalt sulgevad WM_CLOSE abil aknaid, mida klient peaks nägema.

* Teise programmi konteksti kiu loomine. CreateRemoteThread
Läbi selle API saab kõiksugu jama teha, ntx pahalase DLL laadida.
– minimaalne, et programmis oleks api, mis teavitaks täiendava kiu saabumisest. Samuti protsess, kes seda tahab teha. Programmil accept flag, kas on sellise kiuga nõus.

DllMain – DLL_THREAD_ATTACH, kahjuks see ei toimi nii nagu võiks.

* VirtualProtectEx / VirtualAllocEx

lubab kaunilt teise protsessi külge mappida puuduvat mälufragmenti.
Ehk pahalane paneb täiendava jmp käsu programmi koodi või muudab mõnda call aadressi ning pidu võib alati piirkonnas, mis küsiti virtualprotectex abil.
– see api ära keelata.

* tegin tarkvara pcturva juba 2003 aastal, et lihtsamalt tuttavate arvutitest leida pahalasi.
Samuti suutis tarkvara heuristiliselt leida windows hooke
Siis Windowsi lisati uued “hook” tüübid, mida pole võimalik leida ja mida saab suvaline tarkvara rakendada !
Setwindowshookex – globaalset “hooki” lubada ainult ja veelkord ainult hiire sündmuste püüdmiseks.

Ja nimekiri on pikk pikk…mis windowsis turvalisuse ära rikub
__________________________________________

Palju toredaid paroole süsteemist..

NirSoft

ja kui unustasite windowsi paroolid, pole probleemi, muudke ära. Kui vaja ka adminni omad…

http://home.eunet.no/pnordahl/ntpasswd/

Ps. seda parooli muutmist ei soovita teha, kui teil kettal krüpteeritud failid.

Ehk, milleks vaevata pead paroolide välja mõtlemisega…eriti windowsis…

Andmete kaitseks soovitan kasutada TrueCrypti , selle tarkvaraga mul kõige vähem probleeme esinenud. Töötab ka Linuxi peal.

Seniks lund meetrite kaupa :))))


Advertisements

Oli vaja luua Vistas loopback adapterit…

november 20, 2008

..aga kuidas… lõpuks leidsin blogi, kus räägitakse edukast installist.

installing-loopback-adaptor

DevCon programm on märksõnaks.

devcon.exe install %windir%\inf\netloop.inf *msloop

Lihtne ju, kas pole 😉
___________

Lihtsalt täiendav info, pidin IPV6 toetavat programmi testima, aga ennem pidin arvutisse IPV6 installima http://www.microsoft.com/technet/network/ipv6/ipv6faq.mspx

No, mis jamaga tegeletakse: "ID-kaardi kõrvale tuleb uus digitaalne isikutunnistus"

november 20, 2008

ID-kaardi kõrvale tuleb uus digitaalne isikutunnistus

Lisaks saaks ID-kaardi ja digitaalse isikutunnistusega korraga kasutada mitut digitaalset isikutuvastamist võimaldavat dokumenti, näiteks töötamisel paralleelselt kahes elektroonilises keskkonnas

Nii, kratsime koos kukalt, mis asi see siis on. Ei ole kana, ega ei ole muna. Töötab nagu ID kaart, aga samas pole dokument. Tavaline kiipkaart (pole visuaalselt tuvastatavat osa), järelikult tehninguid saab ikka teha.

Eesti riigis ongi põhiprobleem ülemõtlemine, mis viib jaburate lahendusteni, kus puudub karjuv vajadus. Igasuguste süsteemide segaseks ajamine tõstab turvariske.

Väikesed abimehed veebi juures

november 19, 2008

Üldiselt, millised abivahendid on head veebilehtede kirjutamisel ning kontrollimisel.

Mozilla Firefox, alati tasub Tools->Error Console piiluda, mida öeldakse sinu saidi kohta,
kontrollida elementide struktuuri jne

Väga hea abimees Firefoxi kasutajatele ka Firebug

Kui oled IE kasutaja, siis on abiks

Internet Explorer Developer Toolbar

__________

Nii tänaseks levi lõpp – paistab, et külmapoiss leidis Eesti üles..

Vahelduseks naljakas soov sõbralt Feedreaderi plugina jaoks

november 17, 2008

Sõber kurtis, no nii ära tüütanud negatiivsed uudised meediakanalites, et tee õige üks plugin, mis “halvad sõnad” asendaks. Sõnad, krahh = babahh, majanduslangus = kõik on ilus, ansip = tore mees, inflatsioon = meil läheb hästi, korruptsioon = lihtsalt optimiseerisime kulusid :)))) See lihtsalt väike nimekiri. Eks ootan täiendavaid sõna asendusi …

MSSQL : Sinu igapäevased help protseduurid…

november 13, 2008

Nii, ükspäev vaatasin, milliseid süsteemseid protseduure enim kasutan ja tegin nö järjestuse.

1. sp_helptext – nö protseduur, mis võimaldab protseduuride, funktsioonide, trigerite sisu vaadata (sp_helptrigger).
2. sp_monitor – tagastab üldise serveri info ntx palju cpu hõivatud, palju pakette saadetud, mitu ühendust loodud.
3. sp_who2 – näitab, kes serverisse loginud, kus arvutist, millal viimane batch. Enamasti kasutasin seda, et kiiresti näha, kes keda blokeerib.
4. sp_lock – näitab lukustusi, natuke täiustasin väljundit

declare @abimees table (
spid smallint,
dbid smallint,
ObjId int,
IndId smallint,
Type nchar(4),
Resource nchar(16),
Mode nvarchar(8),
Status nvarchar(20))

insert into @abimees
exec sp_lock

select spid,DB_NAME(dbid) as dbname,object_name(ObjId) as object,IndId,
case
when Type=’DB’ then ‘Database’
when Type=’FIL’ then ‘File’
when Type=’IDX’ then ‘Index’
when Type=’PG’ then ‘Page’
when Type=’KEY’ then ‘Key’
when Type=’TAB’ then ‘Table’
when Type=’EXT’ then ‘Extent’
when Type=’RID’ then ‘Row identifier’
end as typestr,
Resource,Mode,Status
from @abimees

5. sp_helpfile – annab ülevaate andmebaasi failidest.
6. sp_depends – protseduur, mis annab infot selle kohta, millised teised andmebaasi objektid sõltuvad etteantud objektist.
7. sp_helpdb – annan infot kõikidest andmebaasidest, nende suurusest, staatustest jne
8. sp_helprotect – annab ülevaate kõikidest objektidele omistatud õigustest; kes tohib exec sooritada, kes select jne Sellele protseduurile soovitan ikka vaadeldava objekti nime ette anda @name=ntxmingitabel. Muidu kuvatakse kõik protseduurid, tabelid jne nende õigustega.
9. sp_helprole – kuvab vaikimisi valitud andmebaasis defineeritud kasutajate rollid.

Seniks … nägelemiseni…

Naljakad turvavead ;))))

november 12, 2008

Worst security blooper ever?

T-Mobile quickly patched the gaping hole, but not before widespread shenanigans ensued. One report on Google’s Android Bug listing describes a user text messaging advice to his girlfriend comprised of the single word “reboot,” only to find his phone rebooting. Surprise!

Ei oskagi midagi selle peale öelda, vaadake, et siis te sõpradele süsteemseid käske ei kirjuta :)))

Kui viirusetõrje muutub ohtlikuks…

november 12, 2008

Oops… AVG accidentally kills Windows

user32.dll kustutamine viirusetõrje poolt ikka suurim bläkk, mida üle pika aja kogenud. Huvitav oli lugeda, kus ühel firmal oli 200 tööjaama, mis peale seda lõpetasid töö – ei tahaks olla antud adminni nahas.

Kas viirusetõrje firma signatuuri algoritmid logisevad või lihtsalt lohakaks muutunud.

Tunne, et tulevikus peaks viirusetõrje panema oma failikonteinerisse failid, mida ta tahab kustutada. Kui arvuti edukalt käivitunud, siis kasutaja saaks otsustada, mis edasi…nagu Norton AntiVirus Quarantine. Huvitav pole AVGd ammu kasutanud, aga kas see programm seda ei tee. Ehk kui midagi viltu läheks, saaks kasutaja kasvõi recovery modes garantiinist failid taastada. Võimalik, et tahan viirusetõrjujatel liialt palju.

Üldiselt kustutamine on viimane võimalus probleemi ravida.

DOSi viiruste algusest jäi meelde seik, kus üks viirus suutis viiruste definitsioonide andmebaasi panna vajalike DOS failide nimed ja viirusetõrje tegi ära räpase töö… Õnneks tänapäeval on signatuuride failid krüpteeritud + algoritmid salastatud.

Aga ikkagit…kuidas kaitsta end viirusetõrje programmide apsakate eest…?

MSSQL : DDL trigger ehk paneme pirukasse muna

november 4, 2008

Üldiselt tavaolukorras ei ole DDL triggereid eriti vaja, ainus hea rakendus neile on andmebaasis toimunud muudatuste logimiseks. Olen seda vaid kasutanud testimisel , üks lihtne näide.

create trigger ainultadminn
on database
for DDL_TABLE_EVENTS
— DDL_DATABASE_LEVEL_EVENTS
as
begin
declare @xmldat xml
declare @event nvarchar(128)
declare @sql nvarchar(max)
set @xmldat=EVENTDATA()
set @event=isnull(@xmldat.value(‘(/EVENT_INSTANCE/EventType)[1]’, ‘nvarchar(128)’),”)
set @sql=isnull(@xmldat.value(‘(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]’,’nvarchar(max)’),”)

if (CURRENT_USER not in (‘dbo’,’sa’)) and (@event in (‘ALTER_TABLE’,’DROP_TABLE’))
begin
raiserror(‘— Viga: Sa tegeled vale asjaga’,16,1)
rollback
end
end;

Sündmuste tüüpide kirjelduse saab siit :
http://msdn.microsoft.com/en-us/library/bb510452.aspx

Ps. DDL triggerid on toetatud alates MSSQL 2005

Soovitan ka tutvuda Logon triggeritega, ala ntx. kasutaja Karu saab siis sisselogida, kui kasutaja Mesitaru on väljas jne

Logon Triggers

MSSQL: näita andmebaasi avatud transaktsioone

november 1, 2008

Täna olen MSSQL 2008 lainel, seetõttu veel näiteid…

Üldiselt Microsoft on ka palju toredaid näiteid kokku pannud, aga enamasti ei leia neid õigel hetkel.

Üks disainiviga, mis võib ilmneda halbadel juhtudel on avatud transaktioon ehk rollbacki – commitit ei järgne. Kaks SQLi:

— seda kasutaks mina, näitab kõiki avatud transaktsioone
SELECT convert(varchar(5000),s.context_info) as sessioonisonum, s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS
(
SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id
)

Microsofti näide oli, seal kuvatakse transaktioone, mis IDLE ehk üldse midagi ei toimu…

SELECT convert(varchar(5000),s.context_info) as sessioonisonum, s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS
(
SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id
)

AND NOT EXISTS
(
SELECT *
FROM sys.dm_exec_requests AS r
WHERE r.session_id = s.session_id
)

Nii, teeme nüüd näite, mis võite katsetada testserveril !

declare @vb varbinary(128)
set @vb=cast(‘adminn, ma näen sind’ as varbinary)
set context_info @vb
begin tran

Ja, kui adminn esimest päringut sooritab, võite kindel olla, et Teile helistatakse ;))

Üldiselt, kui last_request_start_time näitab, et transaktsioon avatud rohkem, kui 15 min…oleks arukas see lõpetada.

kill on Sinu sõber

Lõpetuseks veel üks hea SQL Microsofti poolt, vägagi efektiivselt leiab päringud, mis serverit koormavad !!!

SELECT TOP 55 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END – qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;

MSSQL : Fail varbinary/image kujul, tahaks lugeda tema sisu…

november 1, 2008

Redaktorites ja enamus utiliitides on blobide lugemine suht vaevaline, tihti lihtsam see blob salvestada. Kui ntx andmebaasis hoitakse tekstifaile, tahaks ju mõnikord pilgu peale heita.

Üks triviaalne sql:

declare @p varbinary(max)
declare @c varchar(max)

select @p=failikeha
from failid
where faili_id=1787449
/*
muutuja on ise varchar max tüüpi, aga ma ei soovi kogu faili “dumpi”
ainult esimesed 8000 märki, kui kõike vaja kirjutage 8000 asemel max
*/

set @c=convert(varchar(8000),@p)

select @c

varchar(max) on kasutusel alates MSSQL 2005 !