Uporaba DNS-a za (prikrito) komuniciranje

Matej Kovačič

19. dec 2008 ob 15:41:59

Kot je znano, je raziskovalec Dan Kaminsky pred časom v DNS protokolu odkril resno ranljivost, ki je omogočala izvedbo tim. zastrupljanja predpomnilnika (ang. cache poisoning) posledica napada pa je bila lahko uspešna izvedba ribarjenja (tim. phishing).

Vendar pa je omenjeno pomanjkljivost v DNS protokolu izkoristiti tudi za prikrito povezovanje v internet, kar na primer omogoča program NSTX. Ta teden pa je Landon Fuller napisal podoben programček ki omogoča prikrito komuniciranje preko DNS strežnikov.

DNS zahtevki namreč med drugim vsebujejo zastavico Recursion Desired (RD). Če je zastavica nastavljena na 0, DNS zahtevki ne bodo obravnavani rekurzno, pač pa se bodo servirali iz začasnega pomnilnika DNS sistema. Ravno obratno pa se zgodi v primeru, ko je RD zastavica nastavljena na 1.

Preko DNS je mogoče komunicirati tako, da pošiljatelj DNS-u pošlje zahtevek z RD nastavljenim na 1. DNS nato izvede poizvedbo. Prejemnik nato pošlje isti zahtevek z RD nastavljenim na 0. Če dobi veljaven odgovor, je prejel vrednost 1, če pa odgovora ne dobi, pa je prejel vrednost 0. Na ta način si je mogoče preko DNS strežnika izmenjevati posamezne bite.

Fullerjev program NSDK je napisan v Pythonu in omogoča preprosto, pterdvsem pa prikrito izmenjavo kratkih sporočil preko DNS sistema.

Ker je takšna izmenjava sporočil prikrita, bodo idejo slej ko prej zlorabili teroristi. Zato je najbolje, da čim prej prepovemo uporabo DNS-a...