Java Java
1...1 2...2 3 Java...3 3.1 ezplus...4 3.1.1...4 3.1.2...4 3.1.3...4 3.1.4 JAD...4 3.1.5 KJX...4 3.1.6 HDML...5 3.1.7...5 3.2...8 3.2.1 Homer...8 3.2.2 Hijacker...10 3.2.3 Attacker...11 3.2.4 StrangeBrew...12 3.2.5 Bean Hive...13 3.3...14 3.3.1 ezplus...14 3.3.2 J2ME CLDC / KVM...15 3.3.3 MIDP...16 3.3.4 KDDI-P...16 3.3.5...16 3.3.6...16 3.3.7...17 3.3.8...17 3.3.9 J-PHONE Java...17 3.4...18 4...19 i
1 Java Java ( Java ) Java Java 5 Homer Hijacker Attacker StrangeBrew Bean Hive Java 2 J-PHONE Java au J-PHONE au : cdmaone C451H RAM 400KB 1 J-PHONE : SHARP J-SH07 RAM 650KB 1 1 Java 50KB 1
2 Java Java Java Java Microsoft Windows 98 / Me UNIX Java Java Java Java Java 2
3 Java Java cdmaone C451H ezplus(ezweb Java ) Java2 Micro Edition(J2ME) CLDC(Connected Limited Device Configuration) / MIDP(Mobile Information Device Profile) KDDI-P(KDDI Profile) 2 ezplus Java Homer Hijacker Attacker StrangeBrew Bean Hive 5 Homer.java Hijacker.java Attacker.java Bean Hive 4 PC JDK 1.3 J2ME CLDC / MIDP KDDI-P StrangeBrew class ezplus Java ( ezplus ) Web ezplus ezplus 2 KDDI ezplus Java 3
3.1 ezplus 3.1.1 Java Java2 Platform Standard Edition (J2SE) Java "javac.exe" midpapi.zip kddip.jar midpapi.zip Java2 Micro Edition Wireless Toolkit kddip.jar KDDI-P KDDI KJX 3.1.2 class Java2 Micro Edition Wireless Toolkit "preverify.exe" class 3.1.3 class ezplus "jar.exe" 1 JAR 3.1.4 JAD JAD ( *.jad) JAD Java Application Descriptor Java JAD MIDlet-Name: MIDlet-Vendor: MIDlet-Version: MIDlet-Jar-Size: JAR ( ) MIDlet-Jar-URL: JAR MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC-1.0 MIDlet-1:,, 3.1.5 KJX JAD KDDI KJX "KJXArchive.jar" JAR KJX KJX 2 CRC KJX Web ezplus 4
3.1.6 HDML ezplus HDML HDML Handheld Device Markup Language HDML <action> ezplus URL CGI URL KJX HDML <hdml version="3.0" markable="true"> <choice key="url" title="ezplus"> <action type="accept" task="gosub" dest="device:data/dnld?url=$url" label="ok"> <ce value=" CGI URL&name=KJX &size=kjx &disposition=devkdjx&title= ">ezplus </choice> </hdml> ezplus 1 CGI <ce> CGI EZweb KDDI Web Perl CGI EZweb Web ".htaccess" Web ezplus (*.kjx) HDML (*.hdml) Web 3.1.7 1. Java ezplus Web 2. ezplus ( 1) ezplus ( 2) 3. ezplus ezplus ( 3) 1: 5
2 3 ezplus ezplus ( ) ( 4) 2: ezplus 3: ezplus 6
4: ezplus 7
3.2 Java Java (ezplus ) 3.2.1 Homer Homer ".homer.sh" "/bin/sh" Homer.java ezplus class ( 5) ezplus CLDC / MIDP ezplus KDDI-P 1.0 5: Homer FileOutputStream 2 String getbytes 1 Process 2 Runtime exec 2 7 getbytes MIDP Homer 4 getbytes Java 2 Platform Standard Edition (J2SE) class 8
ezplus javax.microedition.midlet.midlet MIDlet startapp J2SE Java Homer Java ( 6) 3 6: Homer ezplus MIDlet startapp Homer Homer ezplus J2SE KJX CLDC / MIDP KDDI-P 1.0 API FileOutputStream Process Runtime String exec 4 getbytes ezplus Homer MIDlet Homer Homer UNIX ezplus Homer 3 ezplus 9
3.2.2 Hijacker Hijacker Java "$J_Home/classes/sun/tools/javac/Main. class" Hijacker.java Homer class File 4 FileOutputStream 1 5 J2SE FileOutputStream Homer Error preverifying class Hijacker VERIFIER ERROR Hijacker.main([Ljava/lang/String;]V: Cannot find class java/io/fileoutputstream J2SE Homer ezplus MIDlet "Hijacker1.kjx" ezplus ( 7) Hijacker ezplus KJX J2SE KJX CLDC / MIDP KDDI-P 1.0 API File FileOutputStream ezplus Hijacker ezplus Hijacker 7: Hijacker 10
3.2.3 Attacker Attacker "Beginner.class" Java ezplus "Beginner.kjx" Attacker.java Homer class File 2 RandomAccessFile 2 4 J2SE RandomAccessFile Error preverifying class Attacker VERIFIER ERROR Attacker.main([Ljava/lang/String;]V: Cannot find class java/io/randomaccessfile J2SE Homer ezplus ( 8) MIDlet 8: Attacker Attacker ezplus KJX J2SE KJX CLDC / MIDP KDDI-P 1.0 API File RandomAccessFile ezplus Attacker ezplus Attacker Beginner FileInputStream ezplus 11
3.2.4 StrangeBrew StrangeBrew class Java ( "Virus.class") KJX ezplus ( 9) StrangeBrew File RandomAccessFile MIDP KDDI-P 1.0 Attacker StrangeBrew 9: StrangeBrew 12
3.2.5 Bean Hive Bean Hive Java StrangeBrew Bean Hive Homer class File 5 RandomAccessFile 8 13 J2SE ezplus ( 10) MIDlet Bean Hive ezplus KJX J2SE KJX CLDC / MIDP KDDI-P 1.0 API File RandomAccessFile ezplus Bean Hive MIDlet Attacker Bean Hive 10: Bean Hive 13
3.3 ezplus Java 3.3.1 ezplus ezplus au / KDDI Java 50 ezplus ezplus 11 11: ezplus (KDDI ) KVM (K Virtual Machine) Java CPU CLDC (Connected Limited Device Configuration) Java MIDP (Mobile Information Device Profile) CLDC KDDI Profile (KDDI-P) KDDI Java ezplus (KJX ) Java 14
3.3.2 J2ME CLDC / KVM ezplus J2ME CLDC Palm OS NTT i Java J2ME CLDC Java KVM Java Java Native Interface (JNI) OS ( ) ezplus OS Bean Hive ezplus CLDC java.io java.io.inputstream java.io.outputstream java.io.bytearrayinputstream java.io.bytearrayoutputstream java.io.datainputstream java.io.dataoutputstream java.io.reader java.io.writer java.io.inputstreamreader java.io.outputstreamwriter java.io.printstream File, FileOutputStream, RandomAccessFile javax.microedition.io javax.microedition.io.connector java.lang.runtime exec 15
3.3.3 MIDP MIDP CLDC java.io java.lang MIDP 3 1) javax.microedtion.lcdui 2) javax.microediton.midlet MIDP (MIDlet) 3) javax.microedition.rms MIDlet ( MIDlet ) MIDlet MIDlet ezplus MIDP 3.3.4 KDDI-P KDDI-P ezplus Java CLDC com.kddi.io DataFolderConnection KDDI-P 3.3.5 Homer Hijacker FileOutputStream ezplus Java ezplus ezplus 3.3.6 Homer Java Runtime exec ezplus J2ME CLDC / KVM exec 16
3.3.7 Attacker File 3.3.8 StrangeBrew RandomAccessFile Java J2ME CLDC / KVM Java Java ezplus Java 3.3.9 J-PHONE Java J-PHONE Java ezplus J2ME CLDC ezplus 17
3.4 ezplus J2ME CLDC / KVM Java ezplus ezplus J2ME CLDC / KVM Java Java ezplus 18
4 Java UNIX Windows 98 / Me Java Java ezplus Java (Homer Hijacker Attacker StrangeBrew Bean Hive) Java ezplus J2SE ezplus Web ezplus Java MIDlet ezplus 1) ezplus 2) MIDlet ezplus ezplus J2ME CLDC ezplus ezplus J-PHONE Java J2ME CLDC ezplus J-PHONE Java Java KDDI KDDI-P 19