当前位置: 首页 > 科技观察

如何打造一个完美的Dropbox(上)

时间:2023-03-15 14:50:49 科技观察

Dropbox是一款免费的网络文件同步工具。它是由Dropbox运营的在线存储服务。它通过云计算实现互联网上的文件同步,用户可以存储和共享文件和文件夹。Dropbox提供免费和付费服务,Dropbox的付费服务包括DropboxPro和DropboxforBusiness。不同操作系统下都有客户端软件,也有web客户端。即使拥有如此完美的工具,网络安全事件还是时有发生。早在2012年,就有超过6000万的Dropbox账户数据被盗一次。又如,2016年,攻击者利用Dropbox传播了一款名为petya的勒索软件。他们点击存储到Dropbox共享上,用户并没有意识到只要点击Dropbox,病毒就会安装到他们的电脑上。我们一直在为FriendlyArmNanoPiR1S单板计算机(SBC)开发软件映像,他们将使用它来演示一些近距离攻击技术。我将详细介绍通过安装Armbian发行版和P4wnP1ALOA来配置R1S的过程。我们还将快速了解如何将USBProxy配置为键盘记录器。首先,我们将使用MaMe82的P4wnP1将R1S配置为USB攻击的平台,虽然它最初是为RaspberryPiZeroW创建的,但本质上没有任何限制。RaspberryPiZeroW,在国内大家都叫我RaspberryPiZeroW,这里我简称为RPiZeroW。作为树莓派家族中新一代的宠儿,我使用的是与上一代相同的ARM11核心BCM2835处理器,但运行速度提升了40%左右。和树莓派Zero相比,我加入了和3代B一样的WiFi和蓝牙,可以适应更多的场合。我们真正需要的是带有USB设备控制器(UDC)的SBC,以及通过该UDC进行通信的某种方式!R1S非常符合描述,它有2个千兆以太网端口,我们可以设置我们最初会使用它们,但最终我们将它们专门用于以太网攻击,具体过程将在后面描述。R1S也有内置WiFi,虽然它不是特别好的芯片组!但是,我们可以将其用作访问点,以允许远程访问设置的保管箱。我们还可以将USB主机端口用于LTE调制解调器或其他网络接口以实现更远的距离。但首先,我们将使用Armbian默认在USB端口上提供的串行控制台进行连接。我们将基于当前版本的ArmbianBuster(Armbian_20.02.1_Nanopi-r1_buster_current_5.4.20.7z)。下载文件,解压.img文件,按照Armbian官网的提示写入microSD卡。通常,我会执行以下操作,但请确保您使用的是正确的设备设置!mount|grepmmcblk0|whilereaddevrest;dosudoumount$devdone&&(pvArmbian_20.02.1_Nanopi-r1_buster_current_5.4.20.img|sudoddof=/dev/mmcblk0bs=2048)完成后,将microSD卡插入R1S,然后使用microUSB线连接R1S到电脑。确保您选择的数据线是数据线,而不仅仅是充电线!几分钟后,您应该会在控制台上看到一个串行端口(这发生在R1S启动并扩展文件系统以填充SD卡之后)。如果您没有看到新的串口,请检查数据线!dmesg-w显示R1S的枚举您应该能够使用您喜欢的终端仿真器连接到串行端口,我喜欢使用picocom,而且我相信Windows上的Putty也能正常工作。您不必担心波特率,但115200应该没问题。对于Linux主机,串行端口枚举为ttyACM设备,例如/dev/ttyACM0。连接后,会出现初始Armbian登录/设置屏幕。使用密码“1234”以“root”用户身份登录并重新输入密码“1234”以开始将其更改为新密码。请记住您的新root密码!你可能不需要创建一个非特权用户,但如果你真的想,你可以!以root/1234身份登录,然后在中断或完成“新用户帐户”创建过程之前更改root密码之后,注销然后以root或sudo-s从非特权用户重新登录。在启动过程中,我们将以太网电缆从我们的本地网络连接到R1S的WAN端口。几秒钟后,应该为R1S分配一个IP地址。从本地DHCP服务器获取IP地址现在我们可以通过SSH连接到我们的R1S。我还复制了ssh公钥以使以后的连接更容易。在运行P4wnP1之前,我们需要禁用USB串行控制台,以便P4wnP1可以管理USB设备控制器。首先,阻止systemd在设备上启动登录提示:systemctldisableserial-getty@ttyGS0.servicesystemctlstopserial-getty@ttyGS0.service然后,通过阻止加载g_serial模块来停止自动创建串行设备。这样我们将立即卸载它并防止它在将来再次加载:rm/etc/modulesrmmodg_serial现在克隆P4wnP1ALOA存储库并将必要的(预构建的)部分复制到正确的位置。理想情况下,我们会从头开始构建,但目前在构建过程中存在一些错误。幸运的是,为RaspberryPiZeroW构建的二进制文件在NanoPiR1S上运行得很好!aptinstall-ydnsmasqgitclonehttps://github.com/RoganDawes/P4wnP1_aloacdP4wnP1_aloamkdir-p/usr/local/P4wnP1cpbuild/P4wnP1_*/usr/local/bin/cp-rdist/*/usr/local/P4wnP1/cpbuild/webapp*/usr/local/P4wnP1/wwwmv/usr/local/P4wnP1/P4wnP1.service/etc/systemd/system/systemctlenableP4wnP1.servicesystemctlstartP4wnP1.service现在P4wnP1正在运行,您应该能够在同一IP上的端口8000上访问P4wnP1Web界面作为SSH,即http://nanopi-r1:8000。这里没有认证,因为假设P4wnP1暴露的网络是可信网络。现在是测试USB配置是否正常工作的好时机,您应该能够使用右侧的复选框来选择一个或多个要实施的USB类。我通常喜欢实现键盘和鼠标以及自定义HID设备。然后,确保左上角的USB已启用,然后单击Deploy。配置P4wnP1USB配置文件,您应该会看到R1S连接到的计算机检测到一个新的USB设备。例如,在主机上使用“dmesg”,您应该看到如下内容:[2316641.797152]usb1-5:newhigh-speedUSBdevicenumber40usingxhci_hcd[2316641.809806]usb1-5:NewUSBdevicefound,idVendor=1d6b,idProduct=1347,bcdDevice=1381.06[1381.06]]usb1-5:NewUSBdevicestrings:Mfr=1,Product=2,SerialNumber=3[2316641.809810]usb1-5:Product:P4wnP1byMaMe82[2316641.809811]usb1-5:Manufacturer:MaMe82[2316641.809812]usb1-5:SerialNumber1637adbeef181637de]输入:MaMe82P4wnP1byMaMe82as/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/0003:1D6B:1347.0028/input/input85[2316641.867750]hid-inpgeneric0003:128.1D6:但是USBHIDv1.01键盘[MaMe82P4wnP1byMaMe82]onusb-0000:00:14.0-5/input0[2316641.868575]input:MaMe82P4wnP1byMaMe82Mouseas/devices/pci0000:00/0000:00:14.0:1.0/usb/0003:14.0B[input38/7D62316641.868921]hid-generic0003:1D6B:1347.0029:input,hidraw1:USBHIDv1.01Mouse[MaMe82P4wnP1byMaMe82]onusb-0000:00:14.0-5/input1[2316641.869892]hid-generic0003:124A7:124D6hiddev96,hidraw2:USBHIDv1.01Device[MaMe82P4wnP1byMaMe82]onusb-0000:00:14.0-5/input2如果你想在启动时部署这个USB配置,你可以点击Store并输入“startup”作为配置文件名或者,你可以根据需要在手动控制下部署。此时,您应该拥有一个正常运行的P4wnP1设备,并且可以按照Internet上的各种教程实际使用USB功能来攻击连接的设备。注意:我发现P4wnP1在配置(在P4wnP1内)连接到现有接入点时非常不稳定。如果那是您所需要的,我宁愿推荐使用NetworkManager进行这种配置。这种情况建议你忽略下一段,将P4wnP1中的WiFi配置禁用,保存为启动配置文件。如果您确实想利用内置Wi-Fi接口的热点功能进行远程访问,您可能希望让P4wnP1为您管理它,只是因为使用NetworkManager配置它似乎并不容易。如果是这样,您将需要告诉NetworkManager忽略该接口,这样就不存在所有权冲突。您可以通过编辑/etc/NetworkManager/NetworkManager.conf并在底部添加以下两行来执行此操作:[keyfile]unmanaged-devices=interface-name:wlan0您现在可以使用Web界面中的“WiFi设置”选项卡,配置P4wnP1以作为接入点运行Wi-Fi接口。将其存储为“启动”配置文件的一部分,以便在启动时自动配置它。当设备将部署在现场并且没有熟悉的Wi-Fi网络可以连接时,这很有用。可以说,隐藏SSID有助于保持隐藏状态。当然,一旦您开始与它联系,任何本地无线IDS都会很快发现您!或者,您可以选择使用LTE加密狗或其他不太明显的通信机制(例如蓝牙或802.15.4无线电)进行连接。不过这里不讨论如何设置它!另外,我想我会尝试使用USBProxy设置键盘记录器。即使它被特别标记,它仍然有效!这个想法是通过创建相同的USB小工具描述符并简单地将数据包从一侧复制到另一侧来在USB-A上“镜像”USB-A。连接器插入R1S的USB设备。研究USB协议可能是最有趣的,但开箱即用它也可以充当键盘记录器。除了确保首先安装libusb和libusb-dev包之外,我不会详细介绍编译的所有细节。此外,默认情况下,键盘记录器功能与ROT13过滤器绑定,因此您在键盘上键入的任何内容都将被转换13个字符。因此,您可能需要在编译前注释掉添加PacketFilter_ROT13插件的第153行。当您在那里时,您还应该通过将“r+”参数更改为“a+”,将第143行的fopen调用更改为附加到日志文件,而不是将其打开为只读。主要原因是如果输出文件尚不存在,执行将失败,另一种解决方法是在执行之前修改输出文件。编译完成后,你可以运行usb-mitm–k来启动键盘记录器。这会将观察到的击键转储到stderr,这可能没什么用。您还可以将可选参数传递给-k开关,指定要写入的文件:usb-mitm--kkeystrokes,它将在输出文件中记录观察到的击键。捕获击键总之,我们创建了一个USB攻击平台,可用于将击键和鼠标移动注入连接的受害者,以及执行各种其他USB攻击,例如使用优先路由启动USB网络接口。如果有现成的外接USB键盘可以通过R1S插入,我们也可以把它当作USB键盘嗅探器使用。接下来,我们将研究如何将R1S插入授权受害者及其上游交换机之间,伪装成以太网代理。在此配置中,我们可以利用受害计算机通过任何网络身份验证控制机制的能力,同时“劫持”其IP和MAC地址,以便R1S生成的任何流量实际上都来自受害计算机。接下来重点介绍两种情况下作为以太网攻击工具的运行情况。首先,作为一个Dropbox,可以连接到未使用的以太网端口并提供对目标网络的远程访问;第二,作为以太网的中间人,它可以放置在合法设备和它们的内部设备之间。在上游交换机中,使用合法设备的IP地址和MAC地址覆盖您自己的流量。在第二种情况下,我们也可以击败网络访问控制措施,因为合法设备将处理所有这些措施。但是,需要注意的一件事是引起任何异常的网络流量,这可能会触发警报。一个明显的例子是在计划的apt更新发生时对armbian.org进行DNS查找,或者尝试解析0.debian.pool.ntp.org。更复杂的事情可能是特定于Linux的特定DHCP选项和参数不适用于仅适用于Windows的网络。在将您的设备连接到潜在的恶意网络之前,最好先熟悉您设备上运行的所有进程,以及它们在网络上的具体情况!稍后我将演示一种最小化这种意外流量的方法。攻击准备如上所述,我假设你将内置WiFi接口配置为你控制的接入点的客户端,或者作为AP本身,这样我们就可以通过WiFi连接到R1S而不受P4wnP1的影响。您可以在命令行上使用nmtui或nmcli连接到串行控制台时执行此操作,如果您真的知道自己在做什么!设置以太网接口第一个建议是重命名接口以对应于中的LAN和WAN名称,这有助于避免混淆接口。您可以使用以下命令执行此操作,该命令会正确配置systemd-network。printf"lan\tplatform-1c1b000.usb-usb-0:1:1.0\nwan\tplatform-1c30000.ethernet\n"|whilereadifacepath;docat</etc/systemd/network/10-$iface.link[Match]Path=$path[Link]Name=$ifaceEOFdone这将在/etc/systemd/network/中创建两个以lan和wan接口命名的文件,以及应该重命名的设备的路径。这些应该是NanoPiR1S的标准配置,但在其他设备上可能会有所不同。您还应确保NetworkManager不会尝试管理以下接口:cat<>/etc/NetworkManager/NetworkManager.conf[keyfile]unmanaged-devices=interface-name:wan,interface-name:lanEOF创建这些接口后文件,请重新启动以激活规则、重命名接口并重新加载NetworkManager。重命名的wan和lan接口让我们考虑这样一种情况,您找到了一个未使用的以太网端口并想要连接您的设备。这是一项具有潜在风险的活动,因为任何网络访问控制(NAC)系统都可以检测到您未经授权的活动并向操作员发出警报。不过,它可能会奏效,因此值得一试。您想知道的第一件事是目标端口是否实际存在,幸运的是我们可以使用NanoPiR1S上的3个LED获得即时反馈。不幸的是,LAN和WANLED很难看到,因为它们是绿色的,而红色的SYSLED更容易看到。我建议的配置如下,SYSLED显示CPU使用率,WAN和LANLED显示链接状态(当检测到链接时)和检测到的RX流量(当仅接收到流量时闪烁)。modprobeledtrig-netdev#notloadedbydefaultcd/sys/class/leds/echocpu>LED1/trigger#labelledsyschonetdev>LED2/trigger#labelledwanechowan>LED2/device_nameecho1>LED2/linkecho1>LED2/rxechonetdev>LED3/trigger#labelledlanecholan>LED3/device_nameecho1>LEDlinkecho1>LED3/rxiplinksetdevwanupiplinksetdevlanup为了每次R1S开机都能运行,建议在/etc/rc.local中加入以上内容。请注意,如果没有IP链接设置部分,链接检测将无法工作!如果您希望红色LED指示WAN链接,请在上面的脚本中交换LED1和LED2。现在,如果您启动R1S,只需将以太网电缆插入WAN或LAN端口,它就会告诉您该电缆是否已连接,以及该电缆是否有活动。这避免将R1S连接到禁用或断开连接的端口。也就是说,R1S在以太网端口上也有LED指示灯,所以这不是完全必要的!触发硬件LED的选项,选择的触发器在方括号中,当前[cpu]然后,您可以连接并开始监控网络流量,然后再决定如何进行。例如,请求DHCP租约,或者只是劫持观察到的网络范围内未使用的IP地址。在下一篇文章中,我们将介绍自动化攻击方案、网络访问控制、网络命名空间等可能的攻击方式。本文翻译自:https://sensepost.com/blog/2020/making-the-perfect-red-team-dropbox-part-1/和https://sensepost.com/blog/2020/making-the-perfect-red-team-dropbox-part-2/如有转载请注明出处。