Linux开源沙箱Lisa简单介绍

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-slim
    
    ARG maxmind_key=YOUR—KEY
    
    RUN 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 clean
    
    RUN 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 lisa
    
    COPY --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.zip
    
    RUN 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/images
    
    COPY --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.txt
    
    ENV PYTHONPATH /home/lisa
    
    WORKDIR /home/lisa
    
    RUN 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/.git
    
    CMD ["./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:29
    
    RUN dnf install -y @development-tools \
                       gcc-c++ \
                       python2 \
                       zlib-devel \
                       flex \
                       unzip \
    		   bison \
                       bzip2 \
                       wget \
                       findutils
    
    RUN 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/systemtap
    
    WORKDIR /csb/systemtap
    
    RUN ./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/tapset
    
    WORKDIR /
    
    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值