Trojan horse atau hanya Trojan[1] dalam keamanan komputer merujuk kepada sebuah perangkat lunak berbahaya yang dapat merusak sebuah sistem atau jaringan. Tujuan dari Trojan adalah memperoleh informasi dari target (password, kebiasaan user yang tercatat dalam system log, data, dan lain-lain), dan mengendalikan target (memperoleh hak akses pada target).
Trojan berbeda dengan jenis perangkat berbahaya lainnya seperti virus komputer atau worm karena dua hal berikut:
Penggunaan istilah Trojan atau Trojan horse dimaksudkan untuk menyusupkan kode-kode mencurigakan dan merusak di dalam sebuah program baik-baik dan berguna; seperti halnya dalam Perang Troya, para prajurit Sparta bersembunyi di dalam Kuda Troya yang ditujukan sebagai pengabdian kepada Poseidon. Kuda Troya tersebut menurut para petinggi Troya dianggap tidak berbahaya, dan diizinkan masuk ke dalam benteng Troya yang tidak dapat ditembus oleh para prajurit Yunani selama kurang lebih 10 tahun perang Troya bergejolak.
Kebanyakan Trojan saat ini berupa sebuah berkas yang dapat dieksekusi (*.EXE atau *.COM dalam sistem operasi Windows dan DOS atau program dengan nama yang sering dieksekusi dalam sistem operasi UNIX, seperti ls, cat, dan lain-lain) yang dimasukkan ke dalam sistem yang ditembus oleh seorang cracker untuk mencuri data yang penting bagi pengguna (password, data kartu kredit, dan lain-lain). Trojan juga dapat menginfeksi sistem ketika pengguna mengunduh aplikasi (seringnya berupa game komputer) dari sumber yang tidak dapat dipercayai dalam jaringan Internet. Aplikasi-aplikasi tersebut dapat memiliki kode Trojan yang diintegrasikan di dalam dirinya dan mengizinkan seorang cracker untuk dapat mengacak-acak sistem yang bersangkutan.
Beberapa jenis Trojan yang beredar antara lain adalah:
Mendeteksi keberadaan Trojan merupakan sebuah tindakan yang agak sulit dilakukan. Cara termudah adalah dengan melihat port-port mana yang terbuka dan sedang berada dalam keadaan "listening", dengan menggunakan utilitas tertentu semacam Netstat. Hal ini disebabkan banyak Trojan berjalan sebagai sebuah layanan sistem, dan bekerja di latar belakang (background), sehingga Trojan-Trojan tersebut dapat menerima perintah dari penyerang dari jarak jauh. Ketika sebuah transmisi UDP atau TCP dilakukan, tetapi transmisi tersebut dari port (yang berada dalam keadaan "listening") atau alamat yang tidak dikenali, maka hal tersebut bisa dijadikan pedoman bahwa sistem yang bersangkutan telah terinfeksi oleh Trojan Horse.
Berikut ini adalah contoh penggunaan utilitas Netstat dalam Windows XP Professional
C:\>netstat -a -b
Active Connections
Proto Local Address Foreign Address State PID TCP windows-xp:epmap 0.0.0.0:0 LISTENING 956
c:\windows\system32\WS2_32.dll
C:\WINDOWS\system32\RPCRT4.dll
c:\windows\system32\rpcss.dll
C:\WINDOWS\system32\svchost.exe
—unknown component(s) --
[svchost.exe] TCP windows-xp:microsoft-ds 0.0.0.0:0 LISTENING 4
[System] TCP windows-xp:50300 0.0.0.0:0 LISTENING 1908
[oodag.exe] TCP windows-xp:1025 0.0.0.0:0 LISTENING 496
[alg.exe] TCP windows-xp:1030 0.0.0.0:0 LISTENING 1252
[ccApp.exe] UDP windows-xp:microsoft-ds *:* 4
[System] UDP windows-xp:4500 *:* 724
[lsass.exe] UDP windows-xp:isakmp *:* 724
[lsass.exe] UDP windows-xp:1900 *:* 1192
c:\windows\system32\WS2_32.dll
c:\windows\system32\ssdpsrv.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\kernel32.dll
[svchost.exe] UDP windows-xp:ntp *:* 1036
c:\windows\system32\WS2_32.dll
c:\windows\system32\w32time.dll
ntdll.dll
C:\WINDOWS\system32\kernel32.dll
[svchost.exe]
Cara lainnya yang dapat digunakan adalah dengan membuat sebuah "snapshot" terhadap semua berkas program (*.EXE, *.DLL, *.COM, *.VXD, dan lain-lain) dan membandingkannya seiring dengan waktu dengan versi-versi terdahulunya, dalam kondisi komputer tidak terkoneksi ke jaringan. Hal ini dapat dilakukan dengan membuat sebuah checksum terhadap semua berkas program (dengan CRC atau MD5 atau mekanisme lainnya). Karena seringnya Trojan dimasukkan ke dalam direktori di mana sistem operasi berada (\WINDOWS atau \WINNT untuk Windows atau /bin, /usr/bin, /sbin, /usr/sbin dalam keluarga UNIX), maka yang patut dicurigai adalah berkas-berkas yang berada di dalam direktori tersebut. Banyak berkas yang dapat dicurigai, khususnya berkas-berkas program yang memiliki nama yang mirip dengan berkas yang "baik-baik" (seperti "svch0st.exe", dari yang seharusnya "svchost.exe", sebuah berkas yang dijalankan oleh banyak layanan sistem operasi Windows) dapat dicurigai sebagai Trojan Horse.
Cara terakhir adalah dengan menggunakan sebuah perangkat lunak antivirus, yang dilengkapi kemampuan untuk mendeteksi Trojan yang dipadukan dengan firewall yang memonitor setiap transmisi yang masuk dan keluar. Cara ini lebih efisien, tetapi lebih mahal, karena umumnya perangkat lunak antivirus yang dipadukan dengan firewall memiliki harga yang lebih mahal dibandingkan dengan dua cara di atas (yang cenderung "gratis"). Memang, ada beberapa perangkat yang gratis, tetapi tetap saja dibutuhkan waktu, tenaga dan uang untuk mendapatkannya (mengunduhnya dari Internet).