[关闭]
@websec007 2017-08-27T13:31:24.000000Z 字数 7195 阅读 4639

Windows 10 子系统 Bash环境安装

未分类


笔记前言

写这篇学习笔记的原因,主要是这个Windows 10 子系统(Ubuntu)真的很棒,个人喜欢的很,所以一定要推荐给大家,再有就是实在是在安装和使用的过程中遇到了各种“坑”,网上又找不到啥详细的资料,所以这里将自己的学习过程和遇到的“坑”一一记录下来,避免大家再在这些“坑”上面花费无谓的时间。

一、启用windows 10 子系统

Window 10 64位系统,默认其为我们提供“Bash on Windows”的子系统功能,我们只要安装好,就可以获取一个Windows 10 下的Ubuntu linux 系统。这里首先需要启用此功能模块,具体操作步骤详解如下:

“控制面板” - “程序与功能” - “启用或不安不Windows功能” - 勾选“适用于Linux的Windows子系统(Beta)”

二、启动 Bash on Windows 子系统

2.1 调用Bash子系统报错

我们直接进入cmd命令操作界面,输入bash就会出现如下提示信息。

  1. C:\Users\admin>bash
  2. -- Beta 版功能 --
  3. 这将在 Windows 上安装由 Canonical 分发的 Ubuntu
  4. 根据其条款的授权参见此链接:
  5. https://aka.ms/uowterms
  6. 若要使用此功能,必须启用开发人员模式。
  7. 按任意键继续...

提示信息:要求我们启用bash之前,需要先开启“开发人员模式”。

2.2 启用“开发人员模式”

有关如何开启Windows 10 的“开发人员模式”,具体配置步骤配置如下。

2.3 再次调用Bash子系统

精彩预告:第一个坑就出现在这个子系统更新过程中,具体什么情况大家如果跟随我安装的化,就肯定已经看到了,相关解决办法笔记在下文已经给出。

在我们启用“开发人员模式”后,我们再次进入CMD命令行下启动Bash子系统,我们正常的进入 Ubuntu 子系统系统的安装进程,但是发现其在下载子系统的过程中报错了,报错信息如下。

截图:

在进行更新源的时候,一般国内默认情况下可能会出现网络连接错误的报错信息,这主要是由于子系统更新源的服务器不在国内,这导致国内的DNS服务器在进行域名解析时无法正常解析,所以遇到此种情况,大家可以将个人的DNS服务配置为 4.2.2.14.2.2.2,基本就能解决上面的问题了,当然更新速度可能不会很好,请大家要有心理预期。

在能正常下载子系统后,会给出两个确认选项,直接键入y即可,随后在正式进入bash环境前,系统还需要为我们创建一个普通用户,我直接安装提示输入用户名和密码即可正常进入系统了。

有关Ubuntu 子系统下载的相关内容截图说明如下所示:

  1. C:\Users\admin>bash
  2. -- Beta 版功能 --
  3. 这将在 Windows 上安装由 Canonical 分发的 Ubuntu
  4. 根据其条款的授权参见此链接:
  5. https://aka.ms/uowterms
  6. 键入“y”继续: y # 确认进行ubuntu子系统的下载安装;
  7. 正在从 Windows 应用商店下载... 100%
  8. 正在提取文件系统,这将需要几分钟的时间...
  9. 是否要将 Ubuntu 区域设置设置为与 Windows 区域设置(zh-CN)匹配?
  10. 默认区域设置为 en_US
  11. 键入“y”继续: y # 确认时间区域选择

2.4 正式进入子系统环境

待更新包更新完成,我就可以直接使用Ubuntu环境下的Ubuntu 的Bash 环境了,具体使用界面如下。

其实到这里,我们就已经获取了一个独立的Ubuntu linux系统了,想干什么都可以了,后面针对linux的使用,这里会继续为像我自己这样的小白补充一点常用内容和使用过程中遇到的问题。

三、kali 镜像源配置

我们搞安全的小伙伴,可能经常会用到渗透测试的工具,特别是像MSF平台,所这里我们需要将原来的Ubuntu系统的APT更新源修改为kali的源,这样我们更新和安装各类安全工具的时候就更方便了,具体修改apt更新源的方法其实很简单,就是直接使用vim编辑器编辑/etc/apt/sources.list源文件。

精彩预告:第二个使用“坑”就在这里,虽然直接将ubuntu的源更换为kali的源很简单,但是大家使用更新时一定会发现无法正常使用,具体原因和解决的方法,大家继续向下看。

3.1 首先,备份下源文件

为了方式万一,我这里安装修改配置文件的正常过程,先备份源配置文件内容,方便出错是好进行相应的恢复工作。

  1. myles~$
  2. myles~$ cd /etc/apt/
  3. myles~$ sudo cp sources.list sources.list.bak
  4. myles~$

3.2 修改更新源为 kali 的镜像源

  1. deb http://mirrors.neusoft.edu.cn/kali kali-rolling main

注:Neusoft 镜像站:http://mirrors.neusoft.edu.cn/

在修改完原Ubuntu系统的更新源之后,我清理了下更新列表,随后使用命令apt update更新源列表信息是报错了,报错信息显示“由于没有公钥,无法验证下载签名: xxxxxxx”,这样也就是说修改的kali源无法正常使用了。

经过相关资源的学习查询,发现原来是由于我们当前的系统是ubuntu,而ubuttu系统本身是没有kali源需要使用校验使用的“公钥”的,而同时我们又没去下载相应的公钥,直接使用apt update进行源列更新,系统就会报错说没有找到公钥,继而无法使用kali源提供的服务内容,那么接下来就是下载相应的kali“公钥”就可以解决问题了,具体的方法见下一下节内容。

3.3 正常更新kali源的操作方法

在ubuntu系统上配置kali的源时,除了要配置更新源以外,我们还需要下载相应的kali源的校验码,大家参加下面的两步操作就能正常使用kali的更新源了。

  1. myles@ifly-21171:~$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv ED444FF07D8D0BF6
注:这里的下载接收的一串码`ED444FF07D8D0BF6`其实就是报错信息中给出的那一串码。
  1. myles@ifly-21171:~$ sudo apt clean #清理缓存
  2. myles@ifly-21171:~$ sudo atp update #更新源列表

四、软件安装

4.1 MSF 框架安装

精彩预告:这里是本文的第三个“坑”,这个坑是真心的坑,就是我们在安装MSF框架时,无论怎么安装它就是不停的报错,就是死活安装不上,那么具体原因是什么,请大家跟我走...

4.1.1 MSF 安装报错

-(1) MSF 平台安装

  1. # apt list metasploit* # 列出metasploit相关名称的软件列表
  2. # apt install metasploit-framework # 安装MSF框架平台

也是不是自己人品有问题,详尽了各种办法安装MSF框架,更换kali源,卸载子系统重新安装,重新更新,各种办法就是报错,就是安装不了。

报错截图:

4.1.2 MSF 安装报错排查

在安装了一天后,网上也进行了相关的查询,就是没找到任何相关有用的信息,后来无意中发现我每次安装MSF平台框架时,Windows 10 自带的Defender 防护总会报有威胁告警信息弹出,随后我尝试将Defender的杀毒关闭了,MSF安装竟然很惊喜的安装成功了,大家说我们冤不冤了,白白了被折腾了一天,所以大家注意了,在安装MSF的时候,建议大家暂时将Defender的杀毒功能关闭,具体操作关闭方法,请见6.3章节的截图。

4.1.3 MSF 安装成功

4.2 python 环境安装

这里刚好个人要用到一个python 的第三方库scapy,所这里见的记录下scapy安装过程。

4.2 好玩的linux工具安装

Linux 下面其实有很多好玩的小工具程序,这里简单的记录几个好玩的工具命令,做这个只在说明在当前Windows 10 下的这个子系统上我可以玩任何linux下我们想玩的内容。

4.2.1 命令:sl (蒸汽机车)

  你可能了解 ‘ls’命令,并经常使用它来查看文件夹的内容。但是,有些时候你可能会拼写成‘sl’,这时我们应该如何获得一些乐趣而不是看见“command not found”呢?

  1. root@ifly-21171:~# apt install sl

4.2.2 命令:cmatrix(黑客帝国)

  你可能看多好莱坞的电影‘黑客帝国’并陶醉于被赋予Neo的能看到在矩阵中任何事物的能力,或者你会想到一幅类似于‘Hacker’的桌面的生动画面。
  
- (1) cmatrix 安装命令

  1. root@ifly-21171:~# apt install cmatrix

4.2.3 命令: linux_logo(Banner欢迎信息)

linux_logo 程序生成一个彩色的 ANSI 版企鹅图片,还包含一些来自 /proc 的系统信息,有关linux_logo的安装命令具体使用请说明如下。

  1. root@ifly-21171:~# apt install linuxlogo

linux_logo 默认为我提供31个不同风格的Banner欢迎界面,你可以用这个命令查看内置的标志列表。

  1. root@ifly-21171:/mnt/c/Users/admin# linux_logo -L list
  2. Available Built-in Logos:
  3. Num Type Ascii Name Description
  4. 1 Classic Yes aix AIX Logo
  5. 2 Classic Yes bsd FreeBSD Logo
  6. 3 Banner Yes bsd_banner FreeBSD Logo
  7. 4 Classic Yes irix Irix Logo
  8. 5 Classic Yes openbsd OpenBSD Logo
  9. 6 Banner Yes openbsd_banner OpenBSD Logo
  10. 7 Banner Yes solaris The Default Banner Logos
  11. 8 Banner Yes banner-simp Simplified Banner Logo
  12. 9 Banner Yes banner The Default Banner Logo
  13. 10 Classic Yes classic-nodots The Classic Logo, No Periods
  14. 11 Classic Yes classic-simp Classic No Dots Or Letters
  15. 12 Classic Yes classic The Default Classic Logo
  16. 13 Banner Yes blankon An ASCII BlankOn logo
  17. 14 Classic Yes core Core Linux Logo
  18. 15 Banner Yes debian_banner_2 Debian Banner 2
  19. 16 Banner Yes debian_banner Debian Banner (white)
  20. 17 Classic Yes debian_old Debian Old Penguin Logos
  21. 18 Classic Yes debian Debian Swirl Logos
  22. 19 Classic Yes gnu_linux Classic GNU/Linux
  23. 20 Banner Yes mandrake_banner Mandrake(TM) Linux Banner
  24. 21 Banner Yes mandrake Mandrakelinux(TM) Banner
  25. 22 Banner Yes mandriva Mandriva(TM) Linux Banner
  26. 23 Banner Yes pld PLD Linux banner
  27. 24 Classic Yes raspi An ASCII Raspberry Pi logo
  28. 25 Banner Yes redhat RedHat Banner (white)
  29. 26 Banner Yes slackware Slackware Logo
  30. 27 Banner Yes sme SME Server Banner Logo
  31. 28 Banner Yes sourcemage_ban Source Mage GNU/Linux banner
  32. 29 Banner Yes sourcemage Source Mage GNU/Linux large
  33. 30 Banner Yes suse SUSE Logo
  34. 31 Banner Yes ubuntu Ubuntu Logo
  35. Do "linux_logo -L num" where num is from above to get the appropriate logo.
  36. Remember to also use -a to get ascii version.

如果我喜欢,我们可以随机设置我们每次登陆系统时的欢迎信息,具体设置步骤如下。

  1. 第一步:使用vim编辑器打开/etc/bash.bashrc文件
  2. 第二步:直接在文bash.bashrc的结尾处加上下面的语句

五、卸载 Bash on Windows

最后我们如果不喜欢这个系统了,或者由于其他什么原因我们想卸载这个子系统,其实Window 10 的 cmd 命令行下也很体贴的为我们提供了直接卸载“Bash on Windows 子系统”的工具命令lxrun,具体操作如下。

5.1 帮助命令

  1. C:\Users\admin>lxrun -h
  2. LX 子系统执行管理操作
  3. 用法:
  4. /install - 安装子系统
  5. 可选参数:
  6. /y - 不提示用户接受或创建子系统用户
  7. /uninstall - 卸载子系统
  8. 可选参数:
  9. /full - 执行完全卸载
  10. /y - 不提示用户确认
  11. /setdefaultuser - 配置将用于启动 bash 的子系统用户。如果该用户不存在,则会创建该用户。
  12. 可选参数:
  13. username - 提供用户名
  14. /y - 如果提供了用户名,则不提示创建密码
  15. /update - 更新子系统的包索引

5.2 实际操作

  1. C:\Users\admin>lxrun /uninstall /full
  2. 这将在 Windows 中卸载 Ubuntu
  3. 这将删除 Ubuntu 环境以及任何修改、新应用程序和用户数据。
  4. 键入“y”继续: y
  5. 正在卸载...

这样我们就可以将子系统卸载的一干二净哦...是不是使用起来很方便呢...那么接下来大家赶紧去感受吧...

六、安装过程中的问题汇总

6.1 Bash 子系统更新报错

Windows 10 ubuntu 子系统下载更新,报网络连接错误的原因主要是因为微软的服务器国内DNS解析有问题,修改本地DNS服务为 4.2.2.1 或者 4.2.2.2 即可解决问题;

6.2 更改 kali 源后,apt update更新报错;

更换 kali /etc/apt/souces.list源后,进行apt update更新源列表信息时,报没有“公钥”的错误,无法正确更新,解决的方法就是下载“提示信息”中的“公钥”即可,具体命令参考如下。

  1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv ED444FF07D8D0BF6

6.3 安装metasploit-framework时,总是报错;

安装metasploit-framework时总是报错,后进过分析最大的可能就是“Windows Defender” 的杀毒功能模块,将下载的文件干掉了导致的。当停用杀毒模块后,即可正常安装,具体停用的方法,笔者下面也贴出了截图,大家可参考使用。

七、使用感受

笔者在试用这个Windows 10 自带的子系统后,感觉自己完全爱上它了,有了这个Ubuntu子系统,比如我们想使用linux环境的MSF平台时,再也不用去开虚拟机了,直接一个bash命令就可以获取一个ubuntu的linux环境了,随后安装好MSF平台,我就可以使用MSF平台了,不知道大家是不是有和我一样的感受,有了这个子系统我们就可以干任何我们在linux环境中想做的事情了呢,但是事实总是残酷的,我很悲哀的告诉大家,这也是全篇文档中最大的一个坑了,就是这个subsystem子系统不支持网络连接(No internet connectivity in Bash),这也是这个子系统个人认为最大的坑和最大的bug。

所以我只能悲哀的告诉大家,有跟我一样系统linux系统的小伙伴可以去玩一玩这个子系统,安装一些软件和搭建一些跟网络连接没有关系的应用还是可以的,所以大家不要打我,我真的也没办法解决这个坑,只能坐等github共享社区的大神们早点解决这个AF_Famliy不支持的问题吧(AF_PACKET family is not supported yet.)。

学习参考:
https://msdn.microsoft.com/en-us/commandline/wsl/about
https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
https://github.com/Microsoft/BashOnWindows
https://mochazz.github.io/2017/07/27/linux_subsystem/

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注