sap pos dm что это такое
POSDM vs POSDTA
As you may be aware POSDM(Point of Sales Data Management) system traditionally sits under BW as its generally an integral component/system within BW. However there are few customers who have decoupled POSDM and BW primarily to reduce the dependency of BW system, wherein they can send Store/Online sales data directly from POSDM to various SAP(BW,ECC etc) and other Non SAP Systems too.
Nowadays we have been talking about POSDTA and CAR(Customer Activity Repository) where customers have started the transition journey from POSDM to POSDTA. It is quite essential to know how POSDTA is different to POSDM and what are the new features within POSDTA.
Well, POSDTA(Point of Sales Data Transfer and Audit) is one of the various modules of CAR.The other modules of CAR are listed below
1.DDF(Demand Data Foundation)
2.UDF(Unified Demand Forecast)
3.OSA(On Shelf Availability)
4.OPP(Omnichannel Promotional Pricing)
5.Multichannel Transaction Data Management
6.Inventory Visibility with Omnichannel Article Availability and Sourcing
Key points about POSDTA
Below Is a Comparison Chart that explains some of the key differences between POSDM and POSDTA.
*SLT – System Landscape Transformation – This tool is used to replicate Master data from SAP ECC into SAP CAR based on change pointer triggers.
Aram Kalyanasundaram.
Assigned Tags
You should use the IDOC /POSDW/POSTR_CREATEMULTIPLE and the Badi integration. Maybe using SAP PI/PO to map and generate Idoc.
SAP CAR include Application Bundle, including POSDTA (POS Data Transfer & Audit)
You will have to send the sales «receipt» (business transaction) to POSDTA through Idoc
then, POSDATA will send the details or agregated data to connected systems (like ECC, FnR, FMS, BW etc. )
I do not understand what do you mean by replicating sales data, SAP CAR is the repository, it will get replicated Master Data with SLT from ERP Core Solution
Please see the image of CAR, here its mentioned that CAR will get Master data, Inventory Data and Sales document data will be replicated from Source ERP system via SLT.
The answer is in your question and answer.
CAR will get master data replicated by SLT as well as some transactional data for real-time analytics purpose
CAR via POSDW gets the POS receipts and sends agregated sales to ERP (Idoc)
Will will replicate Inventory Data for feeding IM with unprocessed sales data (not yet proceed in pipe dipsatcher but quantity already sold in store)
First of all thank you for sharing the information. I was looking for the same to convince my customer to upgrade SAP POS DM to SAP CAR. My customer is running SAP POSDM in BW with HANA database and therefore when I check the comparison chart I find contradictory views.
We are running POS DM 1.0 on HANA where we have data in POS DM with uncompressed format in table /posdw/tlogf. We do have customization option to store the extension in separate table.
With worklist index POS DM can store the unprocessed sales in /posdw/tlogmi table.
We still follow traditional approach to extract master data which gives added advantage if we upgrade to CAR as well as differentiating sales channel and updating cost(with SAP Standard) will be possible.
No doubt there are numerous things introduced in SAP CAR but here customer is not interested to make use of them and happy with their current tools. We are simply looking for POS DTA at this moment.
If you think I missed anything that could add advantage please let me know.
Thanks for reaching out to me with your queries, which are quite common amongst the retailers who are already running POSDM.Here is my take.
In regards to /POSDW/TLOGF table, this is available only in POSDM on HANA, however not there in traditional POSDM system(which is why I mentioned it as oracle database).Now your next question comes into play..What is the benefit if customer is already having POSDM on HANA.Well, the Fiori inbuilt reports are available which directly access TLOGF tables.And also DDF/UDF will be utilising Transactional data from TLOGF which is not available in POSDM on HANA.In POSDM on HANA you don’t have /POSDW/TLOGF_X table which is being introduced in POSDTA(CAR) and using this you can keep the custom fields in this table, to reduce the load on POSDW/TLOGF table as this will be the key table that will be accessed during inbound and also by other consuming applications of CAR.
When it comes to SLT replication, you have a greater advantage of master data being sync between ECC and POSDTA(CAR) and this will help to a great extent in terms of reducing the master data errors(unknown EAN/Article etc).
Also in CAR you have additional standard fields provided to capture Unknown EAN/Article number to be stored in TLOGF table and also the original store/transaction/date etc in case of return/other store returns etc.This gives good insight when you do sales analytics using standard fields in /POSDW/TLOGF table.
Cost price determination is another key feature, using which you can straight away calculate the Gross Margin of the product/store.
As you may be aware DDF/UDF/OSA/MTDM/PMR etc are other key components of CAR.What we need to understand is CAR is not just another product but its a Foundation powered by HANA and this is used to onboarding all the other components to give a 360deg view of Sales/Stock/Customer Analytics etc all under one roof.
So you are right POSDTA is the first logical step in the CAR journey by enabling SLT for real time master data sync between CAR/ECC.
POS, безопасность и вот это вот все. Разбираем уязвимости популярной Retail-системы
Всем привет. Сегодня хотелось бы с вами поговорить о Point of Sale (далее POS) системах, их архитектуре и безопасности. Вероятно, постпраздничный шок от длинных очередей в магазинах прошел, и самое время посмотреть, что же находится за этой завесой социальных коммуникаций. Исследование, описанное ниже, было проведено @chipik и мной.
Современные POS-системы представляют собой комбинацию программных и аппаратных решений, позволяющих проводить платежные операции и облегчающих ежедневные бизнес-процессы. Говоря о POS-ах, обычно имеют в виду кассовые аппараты, терминалы оплаты и другие привычные состовляющие торговых магазинов. Однако, архитектура POS не ограничивается только этими элементами. Что же касается безопасности, то, казалось бы, это тема не новая: начиная с 2012 года, почти на каждой конференции BlackHat USA был доклад о платежных системах (тут, тут, тут, тут). Но все эти доклады, будучи очень близки к обсуждаемой теме, все же немного о другом.
Чтобы стало понятнее, давайте рассмотрим процедуру оплаты в обычном магазине:
Сначала покупатель проводит картой по считывателю терминала для оплаты своих покупок. Данные кредитной карты поступают в терминал, откуда отправляются в POS-систему. Далее, POS-система связывается с PSP (Payment Service Provider), который, в зависимости от типа кредитной карты, обращается в банк для прохождения процедуры авторизации транзакции. Как раз в этот момент покупателю предлагается ввести PIN-код для подтверждения транзакции. Если все прошло успешно, код авторизации возвращется из банковской сети в PSP и передается в POS-систему и терминал. Все вышеописанные коммуникации происходят в течении пары секунд.
Исследования и атаки, которые упоминались в начале, в основном направлены на платежные терминалы, на взаимодействие с ними покупателей. Сегодня же будет рассмотрена другая часть – POS-системы, через которые проходят данные о транзакции.
Мы уже несколько раз говорили о различных бизнес-процессах, в чем же они заключаются? Рассмотрим, например, классический сетевой магазин. В магазине есть менеджер, скорее всего, их несколько. Каждое утро менеджеру необходимо открывать магазин, а затем и POS-терминалы. Хочется заметить, что POS-терминалы – это не то же самое, что и платежные терминалы. Первое изображение – это платежный терминал, а второе – POS-терминал.
Во время запуска POS-терминалы синхронизируют время и получают обновленные параметры с сервера магазина, включая цены на товары, информацию об их наличии и другие служебные данные. После этого кассиры могут залогиниться за своими рабочими местами и начать работу. Очевидно, что каждое действие на кассе логируется.
В конце дня менеджеру необходимо повторить процедуру в обратном порядке: сначала закрыть кассы, а после – магазин. После этого действия ни одна транзакция не может быть проведена до открытия магазина. Во время закрытия POS-терминалы отправляют свои логи на сервер. Это и есть те бизнес-процессы, о которых упоминалось выше. Именно их POS-системы позволяют упростить и облегчить.
На рынке POS-систем решений довольно много, и подразделяются они на группы продуктов для малых, средних и крупных организаций.
По большей части, они имеют схожую архитектуру. В этой статье мы подробно рассмотрим решение компании SAP: «SAP Point of Sale». Мы также исследовали продукт компании Oracle – MICROS, в котором нашли похожие уязвимости, закрытые в январе 2018 года (CVE-2018-2636).
О компании SAP можно узнать подробнее на официальном сайте. В двух словах: SAP разрабатывает большие ERP-решения для крупных компаний. POS-системы как продукт появились у SAP в 2005 году, когда она поглотила другую фирму – Triversity Transactionware GM, занимающуюся исключительно POS-решениями.
Архитектура SAP POS
Архитектура этой системы состоит из трех частей: Front Office, Back Office и Head office. К первой относят клиентскую часть, т.е. POS client и Mobile POS Client, являющиеся POS-терминалами, за которыми работают кассиры. Front Office соединен с Back Office, где находятся непосредственно локальный сервер магазина (Xpress Server), база данных (Database) и решение для локального управления POS-системой (Store manager), используя которую, менеджер открывает и закрывает магазин и терминалы.
Говоря о локальном решении, мы имеем в виду конкретный магазин, поскольку SAP POS – это продукт для крупных организаций, и архитектурно он задумывался для сети магазинов с центральным управлением. Иными словами, в этом случае, локальное решение – это POS-система одного из магазинов сети.
Глобальное управление сетью магазина осуществляется из головного офиса, с использованием Store Configurator, который соединен со всеми серверами магазинов.
Общий обзор сделан, теперь давайте рассмотрим, как все это устроено поподробнее. А двигаться будем в следующем порядке:
Head office
Store Configurator представляет собой приложение, которое позволяет настраивать в POS-системах абсолютно все. Нет, не так, АБСОЛЮТНО все, начиная с пользователей и внешнего вида экрана кассира и заканчивая шифрованием и иными настройками безопасности.
Как же все это реализовано? После внесения изменений в Store Configurator администратору необходимо нажать «convert», и на файловой системе в папке «Store Configurator/data/parm/» будут созданы специальные файлы с этими параметрами.
Содержимое файлов – это текстовое представление параметров, указанных в Store Configurator. На изображении ниже – файл rcptlogo.rcp.
Далее, администратору необходимо скопировать эти файлы в папку «/Xpress Server/parm/» каждого сервера магазина. Среди файлов, созданных Store Configurator, есть один «особый». Он называется «newparm.trg», и содержит в себе один лишь символ «Z». Xpress Server (сервер магазина), каждые 30 секунд проверяет папку «/parm/» на наличие этого файла. Если находит его, применяет обновленные параметры из загруженных файлов и удаляет «newparm.trg». Таким образом, этот файл выступает в роли своеобразного триггера обновлений.
Back office
Следующий на очереди — Back Office, а точнее – коммуникации внутри него. Он состоит, как уже было сказано ранее, из Xpress Server, Database и Store Manager. Все эти компоненты могут быть установлены как на одной машине, так и на разных. Store Manager взаимодействует с базой по стандартным портам и в данном случае очень напоминает Store Configurator с ограниченным функционалом и той лишь разницей, что записывает изменения параметров в базу данных напрямую, используя stored-процедуры.
В рамках исследования системы были найдены две забавные процедуры: ssp_insert_backdoor и ssp_delete_backdoor. Основная их цель – создать пользователя с именем «back» и паролем «door» и повышенными привилегиями. Конечно же, сделано это лишь на тот случай, когда все пользователи в POS-системе забудут свои данные авторизации.
Взаимодействие Store Manager и Xpress Server осуществляется по порту 2202, и выглядит более интересным. Изучая функционал Store Manager, мы обнаружили раздел Store Administration, который предоставляет любопытные возможности:
Посмотрев пакеты, которые Store Manager отправляет на порт 2202 Xpress Server-а (куда же без WireShark), мы увидели plaint-text команды. «It`s telnet protocol and the port is used for monitoring and not critical configuration,» – узнали мы из документации. Окей, а что если мы попробуем подключиться к этому порту с посторонней машины?
Как оказалось, никакого white list не предусмотрено. По умолчанию, этот порт открыт, и нет никаких рекомендаций по его закрытию в Security Guide. Естественно, ограничить доступ к портам можно сторонними средствами, но мы же смотрим на безопасность POS-системы, верно?
После подключения к Xpress Server на порт 2202 нас встречает приветственное сообщение с версией POS системы. Команда «help» возвращает список доступных функций:
Из названий этих функций вполне понятно их назначение. Отсутствие какой-либо проверки позволяет анонимно открывать и закрывать POS-терминалы, мониторить все, что происходит на них (например, при покупке в консоль выводится содержимое чека) или просто выключить Xpress Server.
Стало очень интересно, как реализованы эти функции в коде, и все ли команды отображены в выводе «help». Процесс, обрабатывающий приходящие запросы, – xps.exe. Немного реверса, и был найден перечень возможных команд. Их оказалось чуть больше 17… их 74. 74 команды принимает и обрабатывает Xpress Server с порта 2202. Описывать все было бы слишком долго, остановимся на самых интересных.
APM-VALIDATE-PASSWD – позволяет проверить данные авторизации, введенные пользователем. Эта команда возвращает три различных кода: 0 – если логин и пароль введен правильно, 1 — если неправильный пароль, 10 — если пользователя с таким логином не существует. Очевидно, ничто не мешает потенциальному нарушителю, находясь в локальной сети магазина, перебрать все возможные комбинации логинов и паролей (логин может состоять только из цифр) и получить данные для доступа к POS-терминалам.
Но brute-force — это же не очень круто, поэтому существует иная команда, Reset password, которая изменяет пароль пользователя на новый. Все, что нужно знать, – это логин, который может быть получен перебором. И еще одно маленькое уточнение. В этой POS-системе логин может состоять только из цифр, что значительно облегчает гипотетический перебор.
Команды FILE-FIND, FILE-OPEN и FILE-READ позволяют найти, открыть и прочитать данные на файловой системе Xpress Server. Вы же еще помните, что все это происходит без регистрации и смс, анонимно? Любопытно, что параметры команды FILE-OPEN передаются напрямую в C++ функцию fopen(), и если неправильно указать режим, то приложение Xpress Server получает ошибку и завершает свою работу.
Перейдем к последней части обзора.
Front office
POS-client, он же POS-терминал, подключается к серверу по порту 2200. Вся информация, все транзакции и вообще все коммуникации происходят именно по этому порту и только в таком направлении: инициатором является клиент, а сервер просто принимает и отвечает на запросы. Если вспомнить бизнес-процессы, то все происходит следующим образом. В начале дня, когда менеджер открывает POS-терминал, он отправляет пакет на сервер: «Сервер, я терминал номер 5, я открыт, пришли мне новые параметры и давай синхронизируем дату и время». В конце дня, когда менеджер закрывает POS-терминал, он отправляет на сервер свои логи. Ну и, конечно же, после каждой транзакции данные о ней и об изменении количества товаров также отправляются на сервер. Посмотрев трафик между POS-терминалом и Xpress Server, мы обнаружили, что пакеты на получение и загрузку файлов имеют определенную структуру:
Len – длина отправляемого пакета. Where – место, куда записываем данные. What – место, откуда берем данные. End – пара NULL-байт. Type – тип пакета, в зависимости от которого с пакетом будут выполнены те или иные действия. Пакеты могут быть:
Так, например, для того, чтобы получить файл с настройками у сервера, POS-client отправляет пакет типа R на порт 2200:
В ответе POS-client получает содержимое запрашиваемого файла и записывает его себе в специальную директорию. При попытке продублировать отправляемый POS-client-ом пакет с другой машины в ответе было также получено содержимое файла на сервере. Как мы видим, здесь также нет никаких проверок: порт 2200 Xpress Server принимает и обрабатывает пакеты от любой машины.
Это показалось забавным, но на чтении файлов далеко не уедешь. Давайте попробуем собрать набор пакетов для загрузки своего файла на сервер. Ведь POS-client как-то же записывает логи на сервер, правильно?
Во-первых, отправляем пакет типа S. Поле Where содержит путь на сервере, куда мы будем записывать данные, поле What необязательно, поскольку мы все делаем вручную, но очень важен размер Size, в котором мы указываем размер следующего, второго, пакета. Он будет типа F — FILE_DATA и будет состоять из своего размера и данных (содержимое), которые мы хотим записать на сервер. Ну и третий, последний пакет типа С — конец файла. После этого, Xpress Server записывает файл в указанную директорию и возвращает пакет типа G — GOOD. Любопытно, что если отправить пакет с неправильным полем Size, Xpress Server удалит файл на сервере. Ниже вы можете увидеть видео-POC анонимной записи, чтения и удаления файла:
Таким образом, из-за отсутствия каких-либо проверок, любой человек, который может подключиться к этому порту, может читать, записывать и удалять файлы на сервере.
И что из всего этого можно получить? Давайте посмотрим, чего можно достигнуть, скомбинировав вышеописанные возможности.
Итак, атакующему необходимо иметь доступ в локальную сеть магазина. Обычно получить его не составляет особого труда, т.к. периферийные устройства, включая весы, регулярно стоят в залах, и доступ к ним не ограничен.
Давайте суммируем наши знания о системе:
Комбинация этих особенностей позволяет изменить любой параметр в SAP POS-системе.
Допустим, атакующий хочет приобрести какой-то товар, скажем, за доллар.
Вот, собственно, и все. Но чего-то все же не хватает, а именно — возможности удаленного выполнения команд на сервере. А она, в общем-то, есть.
Каждый раз, когда Xpress Server обновляет параметры, т.е. находит триггер-файл «newparm.trg», он ищет и запускает два «.bat» файла: «XPSPARM.BAT» и «StopTN.BAT». А это означает только одно – атакующий может их перезаписать и выполнить скрипт с reverse-shell на себя.
Это будет выглядеть примерно так: атакующий заменяет файл «XPSPARM.BAT» на свой, используя порт 2200; записывает файл «newparm.trg», тем самым вызывая обновление параметров и запуск «*.bat» файла.
Шифрование
Да, в SAP POS применяется шифрование, но по умолчанию, «из коробки», оно отключено. Если шифрование настроено, то все важные данные передаются в виде шифротекста. Стоит уточнить, что шифруются именно данные, а не коммуникации между элементами системы. Например, если мониторить транзакции на терминале с включенным шифрованием, то мы получим в ответе шифротекст только вместо номера кредитной карты, остальные же данные будут переданы в открытом виде.
В этой таблице приведены имена таблиц и поля, которые должны пройти процедуру шифрования. В то же время, есть дополнительная таблица «CryptoRegister», где перечислено то же самое, но с указанием «уровня» шифрования. Так, например, пароли пользователей хранятся в виде хэш-значения и имеют уровень шифрования 4, а номера кредитных карт шифруются 3DES и имеют уровень 3.
SAP POS использует для хранения и генерации ключей инструмент «TWSecurity». При его запуске создается специальный «контейнер», и доступ в него возможен только по паролю, в котором хранится ключ шифрования. Поскольку 3DES – это симметричный алгоритм, ключ должен быть одинаковым на всех элементах системы: Front Office, Back office и Head office. Т.е. после создания контейнера его необходимо экспортировать на все части POS-системы. Доступ к ключу осуществляется только по токену, который прописан в реестре. И все было бы круто, но есть одно «НО».
Ключ (вернее его токен), который используется для шифрования данных, задается в Store Configurator… а это значит, что он конвертируется, как и другие параметры, в специальный файл, и может быть изменен атакующим на пустое значение для отключения шифрования в SAP POS.
«Мы патчили, патчили и наконец-то запатчили!»… или что делать в сложившейся ситуации
На данный момент, описаные в этой статье уязвимости закрыты. Да, не с первого раза, получилось почти со второго. Так, первая SAP Note 2476601 вышла 11 июля 2017 года, имела CVSS 8.1 и носила название «Missing Authentication checks in SAP Point of Sale (POS) Retail Xpress Server». В ней был запатчен доступ к порту 2202 (telnet). Это было сделано добавлением нового параметра «BACKOFFICEIPADDRESS», который по умолчанию имеет значение «localhost». Но, в то же время, не было ни одного упоминания о второй уязвимости на порту 2200, которая прекрасно работала и позволяла злоумышленникам удаленно исполнять команды, давая возможность «обойти» свежий июльский патч, просто изменив этот параметр. Наша команда сообщила об этом недочете SAP Product Security Response Team, которая выпустила целых две SAP Note – 2520064 и 2520232, 18 августа 2017 года. SAP Note 2520232 удаляет две stored procedure: «ssp_insert_backdoor» и «ssp_delete_backdoor». SAP Note 2520064 принес больше изменений. Этот патч добавил 3DES шифрование почти ко всем пакетам, которыми обмениваются различные элементы SAP POS: POS-client, Xpress Server, Store Configurator, Store Manager. Т.е. сейчас, даже имея возможность подключения к открытым портам, не зная ключа, у нас нет возможности повлиять на POS-систему: сервер не понимает приходящие к нему незашифрованные пакеты и просто отбрасывает их.
Это действительно интересное решение, но и здесь не обошлось без казусов. Почти сразу после выхода SAP Note на форумах стало появлятся множество сообщений о том, что не работает Store Manager. Дело в том, что SAP забыл о Store Manager, вернее о том, что этот компонент взаимодействует не только с Xpress Server, но и с базой данных. Когда Store Manager отправляет зашифрованный пакет в Базу данных, она возвращает ошибку в открытом тексте, которую Store Manager не может расшифровать и просто crash-ится. В связи с этим, вышел финальный патч, который исправляет ошибку предыдущего патча. Тем не менее, лучшим решением для защиты от возможных атак на вашу инфрастурктуру являются пусть и не всегда удачные, но регулярные обновления.
True story
А вот и любопытные вести с запада: Forever 21, Калифорнийская компания, «US fashion retailer», которая занимается продажей одежды по всему миру с 1984 (815 магазинов, 57 стран, США, Австралия, Бразилия, Китай, Франция и т.д.), 28 декабря 2017 года подтвердила информацию о том, что часть ее POS-систем была скопроментирована в период с 3 апреля по 18 ноября (. ). Эксперты утверждают, что злоумышленники имели анонимный доступ в сеть POS-систем и использовали его для установки вредоносных программ с целью сбора информации о кредитных картах покупателей (номер карты, срок ее действия, владелец, код проверки подлинности). Забавно, что шифрование критических данных в этих системах было отключено (да-да, не работало) аккурат в период с 3 апреля по 18 ноября. Видимо, шифрование не является большой проблемой не только в SAP-системах. К сожалению, точной информации о том, какие именно POS-системы были скопрометированы, найти не удалось. Если верить новостям, то 28 июня 2017 года Forever 21 подписала контракт с Toshiba Global Commerce Solutions о поставке своих систем, но к этому моменты текущие системы уже были скомпроментированы.