Lisa简单介绍

Lisa是一款开源的Linux沙箱,她使用Docker进行部署,通过qemu提供虚拟化能力,目前暂支持arm32/64、x86/x64、mips平台架构。

跳转链接:https://github.com/danieluhricek/LiSa.git

Lisa整体的架构不算复杂,一些核心的功能点:

  • 静态分析主要由radare2提供;
  • 流量分析主要由tcpdump提供,并使用disspcap来分析抓取的pcap包;
  • 动态行为主要由SystemTap提供;

其中,有两个地方比较有意思,第一是:docker;第二是:buildroot

Docker

  1. 使用Docker部署

    整个项目都是通过Docker进行部署,非常方便。

    这里建议修改worker\Dockerfile的配置。提前下载images、radare2

    FROM python:3.6-slimARG maxmind_key=YOUR—KEYRUN sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \&& sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \&& apt-get cleanRUN apt-get update && apt-get install -y --no-install-recommends \gcc \g++ \libpcap-dev \make \unzip \curl \patch \git \qemu \qemu-system \openvpn \binutils \iprange \wget \tar \e2tools \&& useradd -m lisaCOPY --chown=lisa:lisa ./res/lisa-linux-images-v1.0.1.tar.gz /home/lisa/lisa-linux-images-v1.0.1.tar.gz
    COPY --chown=lisa:lisa ./res/radare2-master.zip /home/lisa/radare2-master.zipRUN echo "Setup Radare2 ..." \&& unzip /home/lisa/radare2-master.zip -d /home/lisa/xx \&& mv /home/lisa/xx/radare2-master /home/lisa/radare2 \&& /home/lisa/radare2/sys/install.sh \&& echo "Setup LiSa Linux images ..." \&& tar -xzvf /home/lisa/lisa-linux-images-v1.0.1.tar.gz -C /home/lisa \&& mv /home/lisa/linux-images-1.0.1 /home/lisa/imagesCOPY --chown=lisa:lisa ./data /home/lisa/data
    COPY --chown=lisa:lisa ./docker /home/lisa/docker
    COPY --chown=lisa:lisa ./lisa /home/lisa/lisa
    COPY --chown=lisa:lisa ./requirements.txt /home/lisa/requirements.txtENV PYTHONPATH /home/lisaWORKDIR /home/lisaRUN pip install -r requirements.txt -i https://pypi.douban.com/simple \&& iprange -j data/blacklists/* > data/ipblacklist \&& ./docker/worker/maxmind.sh $maxmind_key \&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \git \gcc \g++ \make \patch \&& rm -rf /var/lib/apt/lists/* \&& rm -rf /radare2/.gitCMD ["./docker/worker/init.sh"]
    
  2. 使用Docker来编译lisa.ko

    Lisa的动态行为是通过systemstap 4.1来实现,具体请参考lisa.stp。后续考虑来详细分析SystemTap。

    这里也建议先下载好交叉编译工具。

    在编译ko的时候,需要提供linux-header,这里的源码需要与buildroot一致,提供一个参考路径:

    ..../buildroot-2018.11.1/output/build/linux-4.16.7
    

    编译ko文件如下:

    docker run --rm -v ..../shared:/shared:rw csb -a arm -k /shared/linux-4.16.7 /shared/lisa.stp
    

    Docker配置文件如下:

    FROM fedora:29RUN dnf install -y @development-tools \gcc-c++ \python2 \zlib-devel \flex \unzip \bison \bzip2 \wget \findutilsRUN rpm -e --nodeps systemtap \&& rpm -e --nodeps systemtap-client \&& rpm -e --nodeps systemtap-devel \&& rpm -e --nodeps systemtap-runtime COPY . /csb/RUN unzip /csb/systemtap-master.zip -d /csb/xx && mv /csb/xx/systemtap-master /csb/systemtapWORKDIR /csb/systemtapRUN ./configure --with-elfutils=/csb/elfutils/elfutils-0.176/ \&& make all \&& make install \&& rm -rf /usr/share/systemtap/tapset \&& mv /csb/tapset /usr/local/share/systemtap/tapsetWORKDIR /ENTRYPOINT ["/csb/entrypoint.sh"]
    

BuildRoot

buildroot版本:buildroot-2018.11.1

内核版本:linux-4.16.7

以aarch64为例:

修改configs/qemu_aarch64_virt_defconfig

BR2_CCACHE=y

BR2_TOOLCHAIN_BUILDROOT_WCHAR=y

BR2_TOOLCHAIN_BUILDROOT_CXX=y

BR2_TARGET_GENERIC_ROOT_PASSWD=“root”

BR2_PACKAGE_STRACE=y

BR2_PACKAGE_STRESS=y

BR2_PACKAGE_OPENSSL=y

BR2_PACKAGE_ELFUTILS=y

BR2_PACKAGE_DROPBEAR=y

修改board/qemu/aarch64-virt/linux.config

CONFIG_RELAY=y

CONFIG_KPROBES=y

CONFIG_DEBUG_INFO=y

CONFIG_GDB_SCRIPTS=y

CONFIG_DEBUG_KERNEL=y

CONFIG_FUNCTION_TRACER=y

最后编译

make qemu_aarch64_virt_defconfig

make BR2_JLEVEL=$(getconf _NPROCESSORS_ONLN)

这里同时需要把systemtap一并编译进去。

其它

安装systemtap时,使用:make install prefix=......./buildroot-2018.11.1/output/target,会把systemtap相关工具安装到/target/bin目录下

虚拟机$PATH=/bin:/sbin:/usr/bin:/usr/sbin默认是不包含/usr/local/bin的~

QEMU虚拟机退出方式:Ctrl+a,然后按 x

Linux开源沙箱Lisa简单介绍相关推荐

  1. 查看linux vnc用户名,Linux-VNC简单介绍

    Linux-VNC 一.VNC简单介绍: VNC,全称为Virtual NetworkComputing,它是一个桌面共享系统.它的功能,类似于windows中 的远程桌面功能.VNC使用了 RFB( ...

  2. 简述linux系统引导流程,简单介绍如何用WinGrub 引导Linux系统简述

    以下主要介绍我的第一次安装Linux系统遭遇,以及怎么度过这个遭遇的,希望对大家有所帮助.不喜欢的可以略过. 一.开篇叙述我第一次安装Linux系统和接下来的经历 开篇:按照北南兄弟的<FC4菜 ...

  3. linux ps le hrtime,Linux 高精度定时器hrtimers简单介绍和应用场景

    hrtimer:high-resolution kernel timers: hrtimers的诞生是由于内核开发者在使用过程中发现,原始的定时器kernel/timers.c,已经可以满足所有场景的 ...

  4. Webrtc 开源代码的简单介绍

     WebRTC提供了视频会议的核心技术,包括音视频的采集.编解码.网络传输.显示等功能,并且还支持跨平台:windows,linux,mac,android, iOS等.Webrtc 是多媒体通信技术 ...

  5. Linux操作系统启动流程简单介绍

    Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程.了解 Linux操作系统的启动过程,对Linux操作系统更深入认识和日常的运维工作非常有帮助,感兴趣的朋友可以了解一 ...

  6. 开源项目cardslib简单介绍和导入eclipse并运行的方法

    本文转自http://blog.csdn.net/a396901990/article/details/25158223,仅供学习使用,所有权力归原作者所有. 开源项目里有两个关于Crad类型的自定义 ...

  7. Linux主流桌面环境简单介绍

    概述:本文收集了在Linux操作平台下的几大最常用的桌面环境,分析了它们的利弊,方便你作出正确的选择. Unity Unity是由Ubuntu系统的开发公司Canonical所开发的,用于它们的旗舰发 ...

  8. linux java jar war_简单介绍Java 的JAR包、EAR包、WAR包区别

    WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专用于Web方面.大部分的JAVA WEB工程,都是打成WAR包 ...

  9. linux Packet socket (1)简单介绍

    本文主要来自于linux自带的man packet手冊: http://man7.org/linux/man-pages/man7/packet.7.html 平时常常使用的INET套接字提供的是7层 ...

最新文章

  1. 好货不能错过!一款在GitHub上22k+star的人力资源管理系统
  2. mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL
  3. Tomcat源码分析 - 1
  4. 如何用Java创建不可变的Map
  5. mysql 函数怎样创建_mysql里怎样创建函数
  6. 04-Fibonacci
  7. CentOS6.5下的Nagios安装配置详解(图文)
  8. 向前、向后、横着走,双足机器人Cassie,靠深度强化学习学会了走路丨论文
  9. 4个Shell小技巧,帮你提高机器学习生产效率
  10. Linux ubuntu基本知识
  11. android源码上面开发App
  12. oppo9s刷机教程_OPPO R9s 目前最简单的刷Recovery ROOT 方法,强烈推荐
  13. 数学分析教程(科大)——1.12笔记+习题
  14. wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
  15. 助力网络安全发展,安全态势攻防赛事可视化
  16. 未找到任何音频输出设备的解决方法
  17. golang中的dns问题
  18. python 3.7.0 小甲鱼 有道词典翻译 (error:50)问题解决
  19. 【人生如逆旅,我亦是行人】-半年总结
  20. 小程序改变swiper样式(带缩略图)

热门文章

  1. L7 记忆概论 长期记忆和工作记忆
  2. nginx之rewrite用法
  3. 海思多媒体(MPP)开发(0)——序言与目录
  4. Win10系统开发者模式安装Ubuntu搭建跳板机查看日志
  5. 公共换乘Java语言怎么编写_公交换乘问题---java解决方案
  6. cin,cin.get(),cin.getline(),getline(),fget()
  7. ad936x接收功能验证的寄存器配置(3)
  8. Java 遍历 Set 集合的方法,以及如何遍历删除 Set 集合中的元素?
  9. 给刚毕业或培训机构出来人的建议
  10. [附源码]计算机毕业设计Python大学生心理测评系统(程序+源码+LW文档)